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..1b4401a
--- /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..3c0e88d
--- /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..fc404ff
--- /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..f8a63e2
--- /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..d8d38df
--- /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.  *
+********************************************************************
