[ir][msl] Generate expectation files.

Add SKIP expectation files for the MSL IR printer.

Bug: tint:1967
Change-Id: Ia0597244328d580fef391a094c46f131751bc01f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/162040
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
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.  *
+********************************************************************