diff --git a/src/tint/lang/msl/writer/printer/discard_test.cc b/src/tint/lang/msl/writer/printer/discard_test.cc
index d0ccbb5..954118a 100644
--- a/src/tint/lang/msl/writer/printer/discard_test.cc
+++ b/src/tint/lang/msl/writer/printer/discard_test.cc
@@ -32,9 +32,7 @@
 namespace tint::msl::writer {
 namespace {
 
-// TODO(jrprice): Disabled as DemoteToHelper introduces module-scope variables, which are not
-// handled correctly yet.
-TEST_F(MslPrinterTest, DISABLED_Discard) {
+TEST_F(MslPrinterTest, Discard) {
     auto* func = b.Function("foo", ty.void_());
     b.Append(func->Block(), [&] {
         auto* if_ = b.If(true);
@@ -45,24 +43,27 @@
         b.Return(func);
     });
 
-    auto* ep = b.Function("main", ty.void_());
-    ep->SetStage(core::ir::Function::PipelineStage::kFragment);
+    auto* ep = b.Function("frag_main", ty.void_(), core::ir::Function::PipelineStage::kFragment);
     b.Append(ep->Block(), [&] {
         b.Call(func);
         b.Return(ep);
     });
 
     ASSERT_TRUE(Generate()) << err_ << output_;
-    EXPECT_EQ(output_, MetalHeader() + R"(
-thread bool continue_execution = true;
-void foo() {
+    EXPECT_EQ(output_, MetalHeader() + R"(struct tint_module_vars_struct {
+  thread bool* continue_execution;
+};
+
+void foo(tint_module_vars_struct tint_module_vars) {
   if (true) {
-    continue_execution = false;
+    (*tint_module_vars.continue_execution) = false;
   }
 }
-fragment void main() {
-  foo();
-  if (!(continue_execution)) {
+fragment void frag_main() {
+  thread bool continue_execution = true;
+  tint_module_vars_struct const tint_module_vars = {.continue_execution=(&continue_execution)};
+  foo(tint_module_vars);
+  if (!((*tint_module_vars.continue_execution))) {
     discard_fragment();
   }
 }
diff --git a/src/tint/lang/msl/writer/printer/printer.cc b/src/tint/lang/msl/writer/printer/printer.cc
index 02da70d..35f1519 100644
--- a/src/tint/lang/msl/writer/printer/printer.cc
+++ b/src/tint/lang/msl/writer/printer/printer.cc
@@ -191,6 +191,60 @@
         return array_template_name_;
     }
 
+    /// Check if a value is emitted as an actual pointer (instead of a reference).
+    /// @param value the value to check
+    /// @returns true if @p value will be emitted as an actual pointer
+    bool IsRealPointer(const core::ir::Value* value) {
+        if (value->Is<core::ir::FunctionParam>()) {
+            // Pointer parameters are always emitted as actual pointers.
+            return true;
+        }
+        return Switch(
+            value->As<core::ir::InstructionResult>()->Instruction(),
+            [&](const core::ir::Var*) {
+                // Variable declarations are always references.
+                return false;
+            },
+            [&](const core::ir::Let*) {
+                // Let declarations capture actual pointers.
+                return true;
+            },
+            [&](const core::ir::Access* a) {
+                // Access instruction emission always dereferences the source.
+                // We only produce a pointer when extracting a pointer from a composite value.
+                return !a->Object()->Type()->Is<core::type::Pointer>() &&
+                       a->Result(0)->Type()->Is<core::type::Pointer>();
+            });
+    }
+
+    /// Emit @p param value, dereferencing it if it is an actual pointer.
+    /// @param out the output stream to write to
+    /// @param value the value to emit
+    template <typename OUT>
+    void EmitAndDerefIfNeeded(OUT& out, const core::ir::Value* value) {
+        if (value && value->Type()->Is<core::type::Pointer>() && IsRealPointer(value)) {
+            out << "(*";
+            EmitValue(out, value);
+            out << ")";
+        } else {
+            EmitValue(out, value);
+        }
+    }
+
+    /// Emit @p param value, taking its address if it is not an actual pointer.
+    /// @param out the output stream to write to
+    /// @param value the value to emit
+    template <typename OUT>
+    void EmitAndTakeAddressIfNeeded(OUT& out, const core::ir::Value* value) {
+        if (value && value->Type()->Is<core::type::Pointer>() && !IsRealPointer(value)) {
+            out << "(&";
+            EmitValue(out, value);
+            out << ")";
+        } else {
+            EmitValue(out, value);
+        }
+    }
+
     /// Emit the function
     /// @param func the function to emit
     void EmitFunction(const core::ir::Function* func) {
@@ -353,7 +407,7 @@
                     [&](const core::ir::CoreUnary* u) { EmitUnary(out, u); },                  //
                     [&](const core::ir::Convert* b) { EmitConvert(out, b); },                  //
                     [&](const core::ir::Let* l) { out << NameOf(l->Result(0)); },              //
-                    [&](const core::ir::Load* l) { EmitValue(out, l->From()); },               //
+                    [&](const core::ir::Load* l) { EmitLoad(out, l); },                        //
                     [&](const core::ir::Construct* c) { EmitConstruct(out, c); },              //
                     [&](const core::ir::Var* var) { out << NameOf(var->Result(0)); },          //
                     [&](const core::ir::Bitcast* b) { EmitBitcast(out, b); },                  //
@@ -504,7 +558,7 @@
         auto out = Line();
         EmitType(out, l->Result(0)->Type());
         out << " const " << NameOf(l->Result(0)) << " = ";
-        EmitValue(out, l->Value());
+        EmitAndTakeAddressIfNeeded(out, l->Value());
         out << ";";
     }
 
@@ -612,7 +666,7 @@
     void EmitStoreVectorElement(const core::ir::StoreVectorElement* l) {
         auto out = Line();
 
-        EmitValue(out, l->To());
+        EmitAndDerefIfNeeded(out, l->To());
         out << "[";
         EmitValue(out, l->Index());
         out << "] = ";
@@ -621,7 +675,7 @@
     }
 
     void EmitLoadVectorElement(StringStream& out, const core::ir::LoadVectorElement* l) {
-        EmitValue(out, l->From());
+        EmitAndDerefIfNeeded(out, l->From());
         out << "[";
         EmitValue(out, l->Index());
         out << "]";
@@ -692,11 +746,16 @@
     /// Emit a discard instruction
     void EmitDiscard() { Line() << "discard_fragment();"; }
 
+    /// Emit a load
+    void EmitLoad(StringStream& out, const core::ir::Load* l) {
+        EmitAndDerefIfNeeded(out, l->From());
+    }
+
     /// Emit a store
     void EmitStore(const core::ir::Store* s) {
         auto out = Line();
 
-        EmitValue(out, s->To());
+        EmitAndDerefIfNeeded(out, s->To());
         out << " = ";
         EmitValue(out, s->From());
         out << ";";
@@ -713,7 +772,7 @@
 
     /// Emit an accessor
     void EmitAccess(StringStream& out, const core::ir::Access* a) {
-        EmitValue(out, a->Object());
+        EmitAndDerefIfNeeded(out, a->Object());
 
         auto* current_type = a->Object()->Type();
         for (auto* index : a->Indices()) {
@@ -786,7 +845,7 @@
             }
             ++i;
 
-            EmitValue(out, arg);
+            EmitAndTakeAddressIfNeeded(out, arg);
         }
         out << ")";
     }
@@ -918,7 +977,7 @@
             }
             ++i;
 
-            EmitValue(out, arg);
+            EmitAndTakeAddressIfNeeded(out, arg);
         }
         out << ")";
     }
@@ -950,7 +1009,7 @@
                     // Emit field designators for structures to account for padding members.
                     auto name = struct_ty->Members()[i]->Name().Name();
                     out << "." << name << "=";
-                    EmitValue(out, arg);
+                    EmitAndTakeAddressIfNeeded(out, arg);
                     i++;
                 }
                 out << "}";
diff --git a/src/tint/lang/msl/writer/printer/var_test.cc b/src/tint/lang/msl/writer/printer/var_test.cc
index 6aa7227..2cc2671 100644
--- a/src/tint/lang/msl/writer/printer/var_test.cc
+++ b/src/tint/lang/msl/writer/printer/var_test.cc
@@ -247,29 +247,37 @@
 )");
 }
 
-// TODO(jrprice): Requires ModuleScopeVarToEntryPointParam transform
-TEST_F(MslPrinterTest, DISABLED_VarGlobalPrivate) {
+TEST_F(MslPrinterTest, VarGlobalPrivate) {
     core::ir::Var* v = nullptr;
-    b.Append(mod.root_block, [&] { v = b.Var("v", ty.ptr<core::AddressSpace::kPrivate, f32>()); });
+    b.Append(mod.root_block, [&] {  //
+        v = b.Var("v", ty.ptr<core::AddressSpace::kPrivate, f32>());
+    });
 
-    auto* func = b.Function("foo", ty.void_());
-    b.Append(func->Block(), [&] {
+    auto* foo = b.Function("foo", ty.void_());
+    b.Append(foo->Block(), [&] {
         auto* ld = b.Load(v->Result(0));
-        auto* a = b.Var("a", ty.ptr<core::AddressSpace::kFunction, f32>());
-        a->SetInitializer(ld->Result(0));
-        b.Return(func);
+        b.Let("a", ld);
+        b.Return(foo);
+    });
+
+    auto* frag = b.Function("frag", ty.void_(), core::ir::Function::PipelineStage::kFragment);
+    b.Append(frag->Block(), [&] {
+        b.Call(foo);
+        b.Return(frag);
     });
 
     ASSERT_TRUE(Generate()) << err_ << output_;
-    EXPECT_EQ(output_, MetalHeader() + R"(
-struct tint_private_vars_struct {
-  float a;
+    EXPECT_EQ(output_, MetalHeader() + R"(struct tint_module_vars_struct {
+  thread float* v;
 };
 
-void foo() {
-    thread tint_private_vars_struct tint_private_vars = {};
-    float const a = tint_private_vars.a;
-    return;
+void foo(tint_module_vars_struct tint_module_vars) {
+  float const a = (*tint_module_vars.v);
+}
+fragment void frag() {
+  thread float v = 0.0f;
+  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
+  foo(tint_module_vars);
 }
 )");
 }
diff --git a/test/tint/access/let/matrix.wgsl.expected.ir.msl b/test/tint/access/let/matrix.wgsl.expected.ir.msl
index 6b2dc0c..78f095c 100644
--- a/test/tint/access/let/matrix.wgsl.expected.ir.msl
+++ b/test/tint/access/let/matrix.wgsl.expected.ir.msl
@@ -1,25 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 0)
+kernel void tint_symbol(device float* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  float3x3 const m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
+  float3 const v = m[1];
+  float const f = v[1];
+  (*tint_module_vars.s) = f;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %m:mat3x3<f32> = let mat3x3<f32>(vec3<f32>(1.0f, 2.0f, 3.0f), vec3<f32>(4.0f, 5.0f, 6.0f), vec3<f32>(7.0f, 8.0f, 9.0f))
-    %4:vec3<f32> = access %m, 1i
-    %v:vec3<f32> = let %4
-    %6:f32 = access %v, 1i
-    %f:f32 = let %6
-    store %s, %f
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix 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
index 646cdc4..f989433 100644
--- a/test/tint/access/let/vector.wgsl.expected.ir.msl
+++ b/test/tint/access/let/vector.wgsl.expected.ir.msl
@@ -1,32 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, vec3<f32>, read_write> = var @binding_point(0, 0)
+kernel void tint_symbol(device float3* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  float3 const v = float3(1.0f, 2.0f, 3.0f);
+  float const scalar = v[1u];
+  float2 const swizzle2 = v.xz;
+  float3 const swizzle3 = v.xzy;
+  float3 const v_1 = float3(scalar);
+  (*tint_module_vars.s) = ((v_1 + float3(swizzle2, 1.0f)) + swizzle3);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %v:vec3<f32> = let vec3<f32>(1.0f, 2.0f, 3.0f)
-    %4:f32 = access %v, 1u
-    %scalar:f32 = let %4
-    %6:vec2<f32> = swizzle %v, xz
-    %swizzle2:vec2<f32> = let %6
-    %8:vec3<f32> = swizzle %v, xzy
-    %swizzle3:vec3<f32> = let %8
-    %10:vec3<f32> = construct %scalar
-    %11:vec3<f32> = let %10
-    %12:vec3<f32> = construct %swizzle2, 1.0f
-    %13:vec3<f32> = add %11, %12
-    %14:vec3<f32> = add %13, %swizzle3
-    store %s, %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix 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
index b8b4503..523b128 100644
--- a/test/tint/access/var/matrix.wgsl.expected.ir.msl
+++ b/test/tint/access/var/matrix.wgsl.expected.ir.msl
@@ -1,26 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 0)
+kernel void tint_symbol(device float* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  float3x3 m = float3x3(0.0f);
+  float3 const v = m[1];
+  float const f = v[1];
+  (*tint_module_vars.s) = f;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %m:ptr<function, mat3x3<f32>, read_write> = var
-    %4:ptr<function, vec3<f32>, read_write> = access %m, 1i
-    %5:vec3<f32> = load %4
-    %v:vec3<f32> = let %5
-    %7:f32 = access %v, 1i
-    %f:f32 = let %7
-    store %s, %f
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix 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
index f02d995..810771b 100644
--- a/test/tint/access/var/vector.wgsl.expected.ir.msl
+++ b/test/tint/access/var/vector.wgsl.expected.ir.msl
@@ -1,34 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, vec3<f32>, read_write> = var @binding_point(0, 0)
+kernel void tint_symbol(device float3* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  float3 v = 0.0f;
+  float const scalar = v[1u];
+  float2 const swizzle2 = v.xz;
+  float3 const swizzle3 = v.xzy;
+  float3 const v_1 = float3(scalar);
+  (*tint_module_vars.s) = ((v_1 + float3(swizzle2, 1.0f)) + swizzle3);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %v:ptr<function, vec3<f32>, read_write> = var
-    %4:f32 = load_vector_element %v, 1u
-    %scalar:f32 = let %4
-    %6:vec3<f32> = load %v
-    %7:vec2<f32> = swizzle %6, xz
-    %swizzle2:vec2<f32> = let %7
-    %9:vec3<f32> = load %v
-    %10:vec3<f32> = swizzle %9, xzy
-    %swizzle3:vec3<f32> = let %10
-    %12:vec3<f32> = construct %scalar
-    %13:vec3<f32> = let %12
-    %14:vec3<f32> = construct %swizzle2, 1.0f
-    %15:vec3<f32> = add %13, %14
-    %16:vec3<f32> = add %15, %swizzle3
-    store %s, %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/array/assign_to_subexpr.wgsl.expected.ir.msl b/test/tint/array/assign_to_subexpr.wgsl.expected.ir.msl
index 3412478..ca8e408 100644
--- a/test/tint/array/assign_to_subexpr.wgsl.expected.ir.msl
+++ b/test/tint/array/assign_to_subexpr.wgsl.expected.ir.msl
@@ -1,54 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  arr:array<i32, 4> @offset(0)
-}
+struct S {
+  tint_array<int, 4> arr;
+};
+struct tint_module_vars_struct {
+  device int* s;
+};
 
-$B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+int foo() {
+  tint_array<int, 4> const src = tint_array<int, 4>{};
+  tint_array<int, 4> dst = {};
+  S dst_struct = {};
+  tint_array<tint_array<int, 4>, 2> dst_array = {};
+  thread tint_array<int, 4>* const dst_ptr = (&dst);
+  thread S* const dst_struct_ptr = (&dst_struct);
+  thread tint_array<tint_array<int, 4>, 2>* const dst_array_ptr = (&dst_array);
+  dst_struct.arr = src;
+  dst_array[1] = src;
+  (*dst_ptr) = src;
+  (*dst_struct_ptr).arr = src;
+  (*dst_array_ptr)[0] = src;
+  return (((*dst_ptr)[0] + (*dst_struct_ptr).arr[0]) + (*dst_array_ptr)[0][0]);
 }
-
-%foo = func():i32 {
-  $B2: {
-    %src:array<i32, 4> = let array<i32, 4>(0i)
-    %dst:ptr<function, array<i32, 4>, read_write> = var
-    %dst_struct:ptr<function, S, read_write> = var
-    %dst_array:ptr<function, array<array<i32, 4>, 2>, read_write> = var
-    %dst_ptr:ptr<function, array<i32, 4>, read_write> = let %dst
-    %dst_struct_ptr:ptr<function, S, read_write> = let %dst_struct
-    %dst_array_ptr:ptr<function, array<array<i32, 4>, 2>, read_write> = let %dst_array
-    %10:ptr<function, array<i32, 4>, read_write> = access %dst_struct, 0u
-    store %10, %src
-    %11:ptr<function, array<i32, 4>, read_write> = access %dst_array, 1i
-    store %11, %src
-    store %dst_ptr, %src
-    %12:ptr<function, array<i32, 4>, read_write> = access %dst_struct_ptr, 0u
-    store %12, %src
-    %13:ptr<function, array<i32, 4>, read_write> = access %dst_array_ptr, 0i
-    store %13, %src
-    %14:ptr<function, i32, read_write> = access %dst_ptr, 0i
-    %15:i32 = load %14
-    %16:ptr<function, i32, read_write> = access %dst_struct_ptr, 0u, 0i
-    %17:i32 = load %16
-    %18:i32 = add %15, %17
-    %19:ptr<function, i32, read_write> = access %dst_array_ptr, 0i, 0i
-    %20:i32 = load %19
-    %21:i32 = add %18, %20
-    ret %21
-  }
+kernel void tint_symbol(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  (*tint_module_vars.s) = foo();
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %23:i32 = call %foo
-    store %s, %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/array/function_parameter.wgsl.expected.ir.msl b/test/tint/array/function_parameter.wgsl.expected.ir.msl
index f87eadf..a150de7 100644
--- a/test/tint/array/function_parameter.wgsl.expected.ir.msl
+++ b/test/tint/array/function_parameter.wgsl.expected.ir.msl
@@ -1,49 +1,37 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 0)
-}
+struct tint_module_vars_struct {
+  device float* s;
+};
 
-%f1 = func(%a:array<f32, 4>):f32 {
-  $B2: {
-    %4:f32 = access %a, 3i
-    ret %4
-  }
+float f1(tint_array<float, 4> a) {
+  return a[3];
 }
-%f2 = func(%a_1:array<array<f32, 4>, 3>):f32 {  # %a_1: 'a'
-  $B3: {
-    %7:f32 = access %a_1, 2i, 3i
-    ret %7
-  }
+float f2(tint_array<tint_array<float, 4>, 3> a) {
+  return a[2][3];
 }
-%f3 = func(%a_2:array<array<array<f32, 4>, 3>, 2>):f32 {  # %a_2: 'a'
-  $B4: {
-    %10:f32 = access %a_2, 1i, 2i, 3i
-    ret %10
-  }
+float f3(tint_array<tint_array<tint_array<float, 4>, 3>, 2> a) {
+  return a[1][2][3];
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B5: {
-    %a1:array<f32, 4> = let array<f32, 4>(0.0f)
-    %a2:array<array<f32, 4>, 3> = let array<array<f32, 4>, 3>(array<f32, 4>(0.0f))
-    %a3:array<array<array<f32, 4>, 3>, 2> = let array<array<array<f32, 4>, 3>, 2>(array<array<f32, 4>, 3>(array<f32, 4>(0.0f)))
-    %15:f32 = call %f1, %a1
-    %v1:f32 = let %15
-    %17:f32 = call %f2, %a2
-    %v2:f32 = let %17
-    %19:f32 = call %f3, %a3
-    %v3:f32 = let %19
-    %21:f32 = add %v1, %v2
-    %22:f32 = add %21, %v3
-    store %s, %22
-    ret
-  }
+kernel void tint_symbol(device float* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_array<float, 4> const a1 = tint_array<float, 4>{};
+  tint_array<tint_array<float, 4>, 3> const a2 = tint_array<tint_array<float, 4>, 3>{};
+  tint_array<tint_array<tint_array<float, 4>, 3>, 2> const a3 = tint_array<tint_array<tint_array<float, 4>, 3>, 2>{};
+  float const v1 = f1(a1);
+  float const v2 = f2(a2);
+  float const v3 = f3(a3);
+  (*tint_module_vars.s) = ((v1 + v2) + v3);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix 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
index 70e6a1c..16f9e96 100644
--- a/test/tint/array/function_return_type.wgsl.expected.ir.msl
+++ b/test/tint/array/function_return_type.wgsl.expected.ir.msl
@@ -1,56 +1,37 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 0)
-}
+struct tint_module_vars_struct {
+  device float* s;
+};
 
-%f1 = func():array<f32, 4> {
-  $B2: {
-    ret array<f32, 4>(0.0f)
-  }
+tint_array<float, 4> f1() {
+  return tint_array<float, 4>{};
 }
-%f2 = func():array<array<f32, 4>, 3> {
-  $B3: {
-    %4:array<f32, 4> = call %f1
-    %5:array<f32, 4> = let %4
-    %6:array<f32, 4> = call %f1
-    %7:array<f32, 4> = let %6
-    %8:array<f32, 4> = call %f1
-    %9:array<array<f32, 4>, 3> = construct %5, %7, %8
-    ret %9
-  }
+tint_array<tint_array<float, 4>, 3> f2() {
+  tint_array<float, 4> const v = f1();
+  tint_array<float, 4> const v_1 = f1();
+  return tint_array<tint_array<float, 4>, 3>{v, v_1, f1()};
 }
-%f3 = func():array<array<array<f32, 4>, 3>, 2> {
-  $B4: {
-    %11:array<array<f32, 4>, 3> = call %f2
-    %12:array<array<f32, 4>, 3> = let %11
-    %13:array<array<f32, 4>, 3> = call %f2
-    %14:array<array<array<f32, 4>, 3>, 2> = construct %12, %13
-    ret %14
-  }
+tint_array<tint_array<tint_array<float, 4>, 3>, 2> f3() {
+  tint_array<tint_array<float, 4>, 3> const v_2 = f2();
+  return tint_array<tint_array<tint_array<float, 4>, 3>, 2>{v_2, f2()};
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B5: {
-    %16:array<f32, 4> = call %f1
-    %a1:array<f32, 4> = let %16
-    %18:array<array<f32, 4>, 3> = call %f2
-    %a2:array<array<f32, 4>, 3> = let %18
-    %20:array<array<array<f32, 4>, 3>, 2> = call %f3
-    %a3:array<array<array<f32, 4>, 3>, 2> = let %20
-    %22:f32 = access %a1, 0i
-    %23:f32 = access %a2, 0i, 0i
-    %24:f32 = add %22, %23
-    %25:f32 = access %a3, 0i, 0i, 0i
-    %26:f32 = add %24, %25
-    store %s, %26
-    ret
-  }
+kernel void tint_symbol(device float* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_array<float, 4> const a1 = f1();
+  tint_array<tint_array<float, 4>, 3> const a2 = f2();
+  tint_array<tint_array<tint_array<float, 4>, 3>, 2> const a3 = f3();
+  (*tint_module_vars.s) = ((a1[0] + a2[0][0]) + a3[0][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/array/size.wgsl.expected.ir.msl b/test/tint/array/size.wgsl.expected.ir.msl
index 21a9191..3474538 100644
--- a/test/tint/array/size.wgsl.expected.ir.msl
+++ b/test/tint/array/size.wgsl.expected.ir.msl
@@ -1,47 +1,31 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float* s;
+};
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 0)
+
+fragment void tint_symbol(device float* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  tint_array<float, 4> signed_literal = {};
+  tint_array<float, 4> unsigned_literal = {};
+  tint_array<float, 4> signed_constant = {};
+  tint_array<float, 4> unsigned_constant = {};
+  tint_array<float, 4> shr_const_expr = {};
+  unsigned_literal = signed_literal;
+  signed_constant = signed_literal;
+  unsigned_constant = signed_literal;
+  shr_const_expr = signed_literal;
+  (*tint_module_vars.s) = ((((signed_literal[0] + unsigned_literal[0]) + signed_constant[0]) + unsigned_constant[0]) + shr_const_expr[0]);
 }
-
-%tint_symbol = @fragment func():void {
-  $B2: {
-    %signed_literal:ptr<function, array<f32, 4>, read_write> = var
-    %unsigned_literal:ptr<function, array<f32, 4>, read_write> = var
-    %signed_constant:ptr<function, array<f32, 4>, read_write> = var
-    %unsigned_constant:ptr<function, array<f32, 4>, read_write> = var
-    %shr_const_expr:ptr<function, array<f32, 4>, read_write> = var
-    %8:array<f32, 4> = load %signed_literal
-    store %unsigned_literal, %8
-    %9:array<f32, 4> = load %signed_literal
-    store %signed_constant, %9
-    %10:array<f32, 4> = load %signed_literal
-    store %unsigned_constant, %10
-    %11:array<f32, 4> = load %signed_literal
-    store %shr_const_expr, %11
-    %12:ptr<function, f32, read_write> = access %signed_literal, 0i
-    %13:f32 = load %12
-    %14:ptr<function, f32, read_write> = access %unsigned_literal, 0i
-    %15:f32 = load %14
-    %16:f32 = add %13, %15
-    %17:ptr<function, f32, read_write> = access %signed_constant, 0i
-    %18:f32 = load %17
-    %19:f32 = add %16, %18
-    %20:ptr<function, f32, read_write> = access %unsigned_constant, 0i
-    %21:f32 = load %20
-    %22:f32 = add %19, %21
-    %23:ptr<function, f32, read_write> = access %shr_const_expr, 0i
-    %24:f32 = load %23
-    %25:f32 = add %22, %24
-    store %s, %25
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix 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
index 99abaa1..a590be4 100644
--- a/test/tint/array/type_initializer.wgsl.expected.ir.msl
+++ b/test/tint/array/type_initializer.wgsl.expected.ir.msl
@@ -1,76 +1,36 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+
+kernel void tint_symbol(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  int const x = 42;
+  tint_array<int, 4> const empty = tint_array<int, 4>{};
+  tint_array<int, 4> const nonempty = tint_array<int, 4>{1, 2, 3, 4};
+  tint_array<int, 4> const nonempty_with_expr = tint_array<int, 4>{1, x, (x + 1), nonempty[3]};
+  tint_array<tint_array<tint_array<int, 4>, 3>, 2> const nested_empty = tint_array<tint_array<tint_array<int, 4>, 3>, 2>{};
+  tint_array<tint_array<tint_array<int, 4>, 3>, 2> const nested_nonempty = tint_array<tint_array<tint_array<int, 4>, 3>, 2>{tint_array<tint_array<int, 4>, 3>{tint_array<int, 4>{1, 2, 3, 4}, tint_array<int, 4>{5, 6, 7, 8}, tint_array<int, 4>{9, 10, 11, 12}}, tint_array<tint_array<int, 4>, 3>{tint_array<int, 4>{13, 14, 15, 16}, tint_array<int, 4>{17, 18, 19, 20}, tint_array<int, 4>{21, 22, 23, 24}}};
+  tint_array<int, 4> const v = tint_array<int, 4>{1, 2, x, (x + 1)};
+  tint_array<tint_array<tint_array<int, 4>, 3>, 2> const nested_nonempty_with_expr = tint_array<tint_array<tint_array<int, 4>, 3>, 2>{tint_array<tint_array<int, 4>, 3>{v, tint_array<int, 4>{5, 6, nonempty[2], (nonempty[3] + 1)}, nonempty}, nested_nonempty[1]};
+  int const subexpr_empty = 0;
+  int const subexpr_nonempty = 3;
+  int const subexpr_nonempty_with_expr = tint_array<int, 4>{1, x, (x + 1), nonempty[3]}[2];
+  tint_array<int, 4> const subexpr_nested_empty = tint_array<int, 4>{};
+  tint_array<int, 4> const subexpr_nested_nonempty = tint_array<int, 4>{5, 6, 7, 8};
+  tint_array<int, 4> const subexpr_nested_nonempty_with_expr = tint_array<tint_array<int, 4>, 2>{tint_array<int, 4>{1, x, (x + 1), nonempty[3]}, nested_nonempty[1][2]}[1];
+  (*tint_module_vars.s) = (((((((((((empty[0] + nonempty[0]) + nonempty_with_expr[0]) + nested_empty[0][0][0]) + nested_nonempty[0][0][0]) + nested_nonempty_with_expr[0][0][0]) + subexpr_empty) + subexpr_nonempty) + subexpr_nonempty_with_expr) + subexpr_nested_empty[0]) + subexpr_nested_nonempty[0]) + subexpr_nested_nonempty_with_expr[0]);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %x:i32 = let 42i
-    %empty:array<i32, 4> = let array<i32, 4>(0i)
-    %nonempty:array<i32, 4> = let array<i32, 4>(1i, 2i, 3i, 4i)
-    %6:i32 = add %x, 1i
-    %7:i32 = access %nonempty, 3i
-    %8:array<i32, 4> = construct 1i, %x, %6, %7
-    %nonempty_with_expr:array<i32, 4> = let %8
-    %nested_empty:array<array<array<i32, 4>, 3>, 2> = let array<array<array<i32, 4>, 3>, 2>(array<array<i32, 4>, 3>(array<i32, 4>(0i)))
-    %nested_nonempty:array<array<array<i32, 4>, 3>, 2> = let array<array<array<i32, 4>, 3>, 2>(array<array<i32, 4>, 3>(array<i32, 4>(1i, 2i, 3i, 4i), array<i32, 4>(5i, 6i, 7i, 8i), array<i32, 4>(9i, 10i, 11i, 12i)), array<array<i32, 4>, 3>(array<i32, 4>(13i, 14i, 15i, 16i), array<i32, 4>(17i, 18i, 19i, 20i), array<i32, 4>(21i, 22i, 23i, 24i)))
-    %12:i32 = add %x, 1i
-    %13:array<i32, 4> = construct 1i, 2i, %x, %12
-    %14:array<i32, 4> = let %13
-    %15:i32 = access %nonempty, 2i
-    %16:i32 = access %nonempty, 3i
-    %17:i32 = add %16, 1i
-    %18:array<i32, 4> = construct 5i, 6i, %15, %17
-    %19:array<array<i32, 4>, 3> = construct %14, %18, %nonempty
-    %20:array<array<i32, 4>, 3> = access %nested_nonempty, 1i
-    %21:array<array<array<i32, 4>, 3>, 2> = construct %19, %20
-    %nested_nonempty_with_expr:array<array<array<i32, 4>, 3>, 2> = let %21
-    %subexpr_empty:i32 = let 0i
-    %subexpr_nonempty:i32 = let 3i
-    %25:i32 = add %x, 1i
-    %26:i32 = access %nonempty, 3i
-    %27:array<i32, 4> = construct 1i, %x, %25, %26
-    %28:i32 = access %27, 2i
-    %subexpr_nonempty_with_expr:i32 = let %28
-    %subexpr_nested_empty:array<i32, 4> = let array<i32, 4>(0i)
-    %subexpr_nested_nonempty:array<i32, 4> = let array<i32, 4>(5i, 6i, 7i, 8i)
-    %32:i32 = add %x, 1i
-    %33:i32 = access %nonempty, 3i
-    %34:array<i32, 4> = construct 1i, %x, %32, %33
-    %35:array<i32, 4> = access %nested_nonempty, 1i, 2i
-    %36:array<array<i32, 4>, 2> = construct %34, %35
-    %37:array<i32, 4> = access %36, 1i
-    %subexpr_nested_nonempty_with_expr:array<i32, 4> = let %37
-    %39:i32 = access %empty, 0i
-    %40:i32 = access %nonempty, 0i
-    %41:i32 = add %39, %40
-    %42:i32 = access %nonempty_with_expr, 0i
-    %43:i32 = add %41, %42
-    %44:i32 = access %nested_empty, 0i, 0i, 0i
-    %45:i32 = add %43, %44
-    %46:i32 = access %nested_nonempty, 0i, 0i, 0i
-    %47:i32 = add %45, %46
-    %48:i32 = access %nested_nonempty_with_expr, 0i, 0i, 0i
-    %49:i32 = add %47, %48
-    %50:i32 = add %49, %subexpr_empty
-    %51:i32 = add %50, %subexpr_nonempty
-    %52:i32 = add %51, %subexpr_nonempty_with_expr
-    %53:i32 = access %subexpr_nested_empty, 0i
-    %54:i32 = add %52, %53
-    %55:i32 = access %subexpr_nested_nonempty, 0i
-    %56:i32 = add %54, %55
-    %57:i32 = access %subexpr_nested_nonempty_with_expr, 0i
-    %58:i32 = add %56, %57
-    store %s, %58
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix 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
deleted file mode 100644
index 9bcc7b5..0000000
--- a/test/tint/benchmark/atan2-const-eval.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,2023 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Output = struct @align(4) {
-  value:f32 @offset(0)
-}
-
-$B1: {  # 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: {
-    %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.14159250259399414062f
-    %5:ptr<storage, f32, read_write> = access %outputs, 2i, 0u
-    store %5, -3.14159250259399414062f
-    %6:ptr<storage, f32, read_write> = access %outputs, 3i, 0u
-    store %6, -3.14159250259399414062f
-    %7:ptr<storage, f32, read_write> = access %outputs, 4i, 0u
-    store %7, -3.14159250259399414062f
-    %8:ptr<storage, f32, read_write> = access %outputs, 5i, 0u
-    store %8, -3.14159250259399414062f
-    %9:ptr<storage, f32, read_write> = access %outputs, 6i, 0u
-    store %9, -3.14159250259399414062f
-    %10:ptr<storage, f32, read_write> = access %outputs, 7i, 0u
-    store %10, -3.14159250259399414062f
-    %11:ptr<storage, f32, read_write> = access %outputs, 8i, 0u
-    store %11, -3.14159250259399414062f
-    %12:ptr<storage, f32, read_write> = access %outputs, 9i, 0u
-    store %12, -3.14159250259399414062f
-    %13:ptr<storage, f32, read_write> = access %outputs, 10i, 0u
-    store %13, -3.14159250259399414062f
-    %14:ptr<storage, f32, read_write> = access %outputs, 11i, 0u
-    store %14, -3.14159250259399414062f
-    %15:ptr<storage, f32, read_write> = access %outputs, 12i, 0u
-    store %15, -3.14159250259399414062f
-    %16:ptr<storage, f32, read_write> = access %outputs, 13i, 0u
-    store %16, -3.14159250259399414062f
-    %17:ptr<storage, f32, read_write> = access %outputs, 14i, 0u
-    store %17, -3.14159250259399414062f
-    %18:ptr<storage, f32, read_write> = access %outputs, 15i, 0u
-    store %18, -3.14159250259399414062f
-    %19:ptr<storage, f32, read_write> = access %outputs, 16i, 0u
-    store %19, -3.14159250259399414062f
-    %20:ptr<storage, f32, read_write> = access %outputs, 17i, 0u
-    store %20, -3.14159250259399414062f
-    %21:ptr<storage, f32, read_write> = access %outputs, 18i, 0u
-    store %21, -3.14159250259399414062f
-    %22:ptr<storage, f32, read_write> = access %outputs, 19i, 0u
-    store %22, -3.14159250259399414062f
-    %23:ptr<storage, f32, read_write> = access %outputs, 20i, 0u
-    store %23, -3.14159250259399414062f
-    %24:ptr<storage, f32, read_write> = access %outputs, 21i, 0u
-    store %24, -3.14159250259399414062f
-    %25:ptr<storage, f32, read_write> = access %outputs, 22i, 0u
-    store %25, -3.14159250259399414062f
-    %26:ptr<storage, f32, read_write> = access %outputs, 23i, 0u
-    store %26, -3.14159250259399414062f
-    %27:ptr<storage, f32, read_write> = access %outputs, 24i, 0u
-    store %27, -3.14159250259399414062f
-    %28:ptr<storage, f32, read_write> = access %outputs, 25i, 0u
-    store %28, -3.14159250259399414062f
-    %29:ptr<storage, f32, read_write> = access %outputs, 26i, 0u
-    store %29, -3.14159250259399414062f
-    %30:ptr<storage, f32, read_write> = access %outputs, 27i, 0u
-    store %30, -3.14159250259399414062f
-    %31:ptr<storage, f32, read_write> = access %outputs, 28i, 0u
-    store %31, -3.14159250259399414062f
-    %32:ptr<storage, f32, read_write> = access %outputs, 29i, 0u
-    store %32, -3.14159250259399414062f
-    %33:ptr<storage, f32, read_write> = access %outputs, 30i, 0u
-    store %33, -3.14159250259399414062f
-    %34:ptr<storage, f32, read_write> = access %outputs, 31i, 0u
-    store %34, -3.14159250259399414062f
-    %35:ptr<storage, f32, read_write> = access %outputs, 32i, 0u
-    store %35, -3.14159250259399414062f
-    %36:ptr<storage, f32, read_write> = access %outputs, 33i, 0u
-    store %36, -3.14159250259399414062f
-    %37:ptr<storage, f32, read_write> = access %outputs, 34i, 0u
-    store %37, -3.14159250259399414062f
-    %38:ptr<storage, f32, read_write> = access %outputs, 35i, 0u
-    store %38, -3.14159250259399414062f
-    %39:ptr<storage, f32, read_write> = access %outputs, 36i, 0u
-    store %39, -3.14159250259399414062f
-    %40:ptr<storage, f32, read_write> = access %outputs, 37i, 0u
-    store %40, -3.14159250259399414062f
-    %41:ptr<storage, f32, read_write> = access %outputs, 38i, 0u
-    store %41, -3.14159250259399414062f
-    %42:ptr<storage, f32, read_write> = access %outputs, 39i, 0u
-    store %42, -3.14159250259399414062f
-    %43:ptr<storage, f32, read_write> = access %outputs, 40i, 0u
-    store %43, -3.14159250259399414062f
-    %44:ptr<storage, f32, read_write> = access %outputs, 41i, 0u
-    store %44, -3.14159250259399414062f
-    %45:ptr<storage, f32, read_write> = access %outputs, 42i, 0u
-    store %45, -3.14159250259399414062f
-    %46:ptr<storage, f32, read_write> = access %outputs, 43i, 0u
-    store %46, -3.14159250259399414062f
-    %47:ptr<storage, f32, read_write> = access %outputs, 44i, 0u
-    store %47, -3.14159250259399414062f
-    %48:ptr<storage, f32, read_write> = access %outputs, 45i, 0u
-    store %48, -3.14159250259399414062f
-    %49:ptr<storage, f32, read_write> = access %outputs, 46i, 0u
-    store %49, -3.14159250259399414062f
-    %50:ptr<storage, f32, read_write> = access %outputs, 47i, 0u
-    store %50, -3.14159250259399414062f
-    %51:ptr<storage, f32, read_write> = access %outputs, 48i, 0u
-    store %51, -3.14159250259399414062f
-    %52:ptr<storage, f32, read_write> = access %outputs, 49i, 0u
-    store %52, -3.14159250259399414062f
-    %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.07789492607116699219f
-    %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.78946542739868164062f
-    %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.57079648971557617188f
-    %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.90975320339202880859f
-    %72:ptr<storage, f32, read_write> = access %outputs, 69i, 0u
-    store %72, -0.84415400028228759766f
-    %73:ptr<storage, f32, read_write> = access %outputs, 70i, 0u
-    store %73, -0.78539818525314331055f
-    %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.57079637050628662109f
-    %174:ptr<storage, f32, read_write> = access %outputs, 171i, 0u
-    store %174, -1.57079637050628662109f
-    %175:ptr<storage, f32, read_write> = access %outputs, 172i, 0u
-    store %175, -1.57079637050628662109f
-    %176:ptr<storage, f32, read_write> = access %outputs, 173i, 0u
-    store %176, -1.57079637050628662109f
-    %177:ptr<storage, f32, read_write> = access %outputs, 174i, 0u
-    store %177, -1.57079637050628662109f
-    %178:ptr<storage, f32, read_write> = access %outputs, 175i, 0u
-    store %178, -1.57079637050628662109f
-    %179:ptr<storage, f32, read_write> = access %outputs, 176i, 0u
-    store %179, -1.57079637050628662109f
-    %180:ptr<storage, f32, read_write> = access %outputs, 177i, 0u
-    store %180, -1.57079637050628662109f
-    %181:ptr<storage, f32, read_write> = access %outputs, 178i, 0u
-    store %181, -1.57079637050628662109f
-    %182:ptr<storage, f32, read_write> = access %outputs, 179i, 0u
-    store %182, -1.57079637050628662109f
-    %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.01234505139291286469f
-    %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.00444441521540284157f
-    %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.00346019375137984753f
-    %212:ptr<storage, f32, read_write> = access %outputs, 209i, 0u
-    store %212, -0.00308640976436436176f
-    %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.00249999458901584148f
-    %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.00118906015995889902f
-    %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.00104058231227099895f
-    %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.00062499986961483955f
-    %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.00049382715951651335f
-    %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.57079637050628662109f
-    %293:ptr<storage, f32, read_write> = access %outputs, 290i, 0u
-    store %293, -1.57079637050628662109f
-    %294:ptr<storage, f32, read_write> = access %outputs, 291i, 0u
-    store %294, -1.57079637050628662109f
-    %295:ptr<storage, f32, read_write> = access %outputs, 292i, 0u
-    store %295, -1.57079637050628662109f
-    %296:ptr<storage, f32, read_write> = access %outputs, 293i, 0u
-    store %296, -1.57079637050628662109f
-    %297:ptr<storage, f32, read_write> = access %outputs, 294i, 0u
-    store %297, -1.57079637050628662109f
-    %298:ptr<storage, f32, read_write> = access %outputs, 295i, 0u
-    store %298, -1.57079637050628662109f
-    %299:ptr<storage, f32, read_write> = access %outputs, 296i, 0u
-    store %299, -1.57079637050628662109f
-    %300:ptr<storage, f32, read_write> = access %outputs, 297i, 0u
-    store %300, -1.57079637050628662109f
-    %301:ptr<storage, f32, read_write> = access %outputs, 298i, 0u
-    store %301, -1.57079637050628662109f
-    %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.03304581716656684875f
-    %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.01234505139291286469f
-    %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.00444441521540284157f
-    %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.00346019375137984753f
-    %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.00308640976436436176f
-    %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.00249999458901584148f
-    %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.00216332799755036831f
-    %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.57079637050628662109f
-    %411:ptr<storage, f32, read_write> = access %outputs, 408i, 0u
-    store %411, -1.57079637050628662109f
-    %412:ptr<storage, f32, read_write> = access %outputs, 409i, 0u
-    store %412, -1.57079637050628662109f
-    %413:ptr<storage, f32, read_write> = access %outputs, 410i, 0u
-    store %413, -1.57079637050628662109f
-    %414:ptr<storage, f32, read_write> = access %outputs, 411i, 0u
-    store %414, -1.57079637050628662109f
-    %415:ptr<storage, f32, read_write> = access %outputs, 412i, 0u
-    store %415, -1.57079637050628662109f
-    %416:ptr<storage, f32, read_write> = access %outputs, 413i, 0u
-    store %416, -1.57079637050628662109f
-    %417:ptr<storage, f32, read_write> = access %outputs, 414i, 0u
-    store %417, -1.57079637050628662109f
-    %418:ptr<storage, f32, read_write> = access %outputs, 415i, 0u
-    store %418, -1.57079637050628662109f
-    %419:ptr<storage, f32, read_write> = access %outputs, 416i, 0u
-    store %419, -1.57079637050628662109f
-    %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.51238942146301269531f
-    %436:ptr<storage, f32, read_write> = access %outputs, 433i, 0u
-    store %436, -0.34555554389953613281f
-    %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.01331282313913106918f
-    %458:ptr<storage, f32, read_write> = access %outputs, 455i, 0u
-    store %458, -0.01234505139291286469f
-    %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.01070113759487867355f
-    %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.00694433273747563362f
-    %468:ptr<storage, f32, read_write> = access %outputs, 465i, 0u
-    store %468, -0.00657404679805040359f
-    %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.00562494015321135521f
-    %472:ptr<storage, f32, read_write> = access %outputs, 469i, 0u
-    store %472, -0.00535390479490160942f
-    %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.0048674573190510273f
-    %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.57079637050628662109f
-    %528:ptr<storage, f32, read_write> = access %outputs, 525i, 0u
-    store %528, -1.57079637050628662109f
-    %529:ptr<storage, f32, read_write> = access %outputs, 526i, 0u
-    store %529, -1.57079637050628662109f
-    %530:ptr<storage, f32, read_write> = access %outputs, 527i, 0u
-    store %530, -1.57079637050628662109f
-    %531:ptr<storage, f32, read_write> = access %outputs, 528i, 0u
-    store %531, -1.57079637050628662109f
-    %532:ptr<storage, f32, read_write> = access %outputs, 529i, 0u
-    store %532, -1.57079637050628662109f
-    %533:ptr<storage, f32, read_write> = access %outputs, 530i, 0u
-    store %533, -1.57079637050628662109f
-    %534:ptr<storage, f32, read_write> = access %outputs, 531i, 0u
-    store %534, -1.57079637050628662109f
-    %535:ptr<storage, f32, read_write> = access %outputs, 532i, 0u
-    store %535, -1.57079637050628662109f
-    %536:ptr<storage, f32, read_write> = access %outputs, 533i, 0u
-    store %536, -1.57079637050628662109f
-    %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.19502025842666625977f
-    %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.03304581716656684875f
-    %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.01234505139291286469f
-    %585:ptr<storage, f32, read_write> = access %outputs, 582i, 0u
-    store %585, -0.0116868307814002037f
-    %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.00790107063949108124f
-    %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.57079637050628662109f
-    %644:ptr<storage, f32, read_write> = access %outputs, 641i, 0u
-    store %644, -1.57079637050628662109f
-    %645:ptr<storage, f32, read_write> = access %outputs, 642i, 0u
-    store %645, -1.57079637050628662109f
-    %646:ptr<storage, f32, read_write> = access %outputs, 643i, 0u
-    store %646, -1.57079637050628662109f
-    %647:ptr<storage, f32, read_write> = access %outputs, 644i, 0u
-    store %647, -1.57079637050628662109f
-    %648:ptr<storage, f32, read_write> = access %outputs, 645i, 0u
-    store %648, -1.57079637050628662109f
-    %649:ptr<storage, f32, read_write> = access %outputs, 646i, 0u
-    store %649, -1.57079637050628662109f
-    %650:ptr<storage, f32, read_write> = access %outputs, 647i, 0u
-    store %650, -1.57079637050628662109f
-    %651:ptr<storage, f32, read_write> = access %outputs, 648i, 0u
-    store %651, -1.57079637050628662109f
-    %652:ptr<storage, f32, read_write> = access %outputs, 649i, 0u
-    store %652, -1.57079637050628662109f
-    %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.22524082660675048828f
-    %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.47177752852439880371f
-    %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.12686598300933837891f
-    %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.07700791209936141968f
-    %683:ptr<storage, f32, read_write> = access %outputs, 680i, 0u
-    store %683, -0.06914168596267700195f
-    %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.05160703137516975403f
-    %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.03187695518136024475f
-    %693:ptr<storage, f32, read_write> = access %outputs, 690i, 0u
-    store %693, -0.02971776574850082397f
-    %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.02600870281457901001f
-    %696:ptr<storage, f32, read_write> = access %outputs, 693i, 0u
-    store %696, -0.02440921403467655182f
-    %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.01825947687029838562f
-    %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.0164350755512714386f
-    %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.01351999863982200623f
-    %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.0123450523242354393f
-    %710:ptr<storage, f32, read_write> = access %outputs, 707i, 0u
-    store %710, -0.0118141956627368927f
-    %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.50795960426330566406f
-    %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.57079637050628662109f
-    %759:ptr<storage, f32, read_write> = access %outputs, 756i, 0u
-    store %759, -1.57079637050628662109f
-    %760:ptr<storage, f32, read_write> = access %outputs, 757i, 0u
-    store %760, -1.57079637050628662109f
-    %761:ptr<storage, f32, read_write> = access %outputs, 758i, 0u
-    store %761, -1.57079637050628662109f
-    %762:ptr<storage, f32, read_write> = access %outputs, 759i, 0u
-    store %762, -1.57079637050628662109f
-    %763:ptr<storage, f32, read_write> = access %outputs, 760i, 0u
-    store %763, -1.57079637050628662109f
-    %764:ptr<storage, f32, read_write> = access %outputs, 761i, 0u
-    store %764, -1.57079637050628662109f
-    %765:ptr<storage, f32, read_write> = access %outputs, 762i, 0u
-    store %765, -1.57079637050628662109f
-    %766:ptr<storage, f32, read_write> = access %outputs, 763i, 0u
-    store %766, -1.57079637050628662109f
-    %767:ptr<storage, f32, read_write> = access %outputs, 764i, 0u
-    store %767, -1.57079637050628662109f
-    %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.63363301753997802734f
-    %787:ptr<storage, f32, read_write> = access %outputs, 784i, 0u
-    store %787, -0.51238942146301269531f
-    %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.34555554389953613281f
-    %790:ptr<storage, f32, read_write> = access %outputs, 787i, 0u
-    store %790, -0.28918060660362243652f
-    %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.04278006777167320251f
-    %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.01946752332150936127f
-    %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.57079637050628662109f
-    %873:ptr<storage, f32, read_write> = access %outputs, 870i, 0u
-    store %873, -1.57079637050628662109f
-    %874:ptr<storage, f32, read_write> = access %outputs, 871i, 0u
-    store %874, -1.57079637050628662109f
-    %875:ptr<storage, f32, read_write> = access %outputs, 872i, 0u
-    store %875, -1.57079637050628662109f
-    %876:ptr<storage, f32, read_write> = access %outputs, 873i, 0u
-    store %876, -1.57079637050628662109f
-    %877:ptr<storage, f32, read_write> = access %outputs, 874i, 0u
-    store %877, -1.57079637050628662109f
-    %878:ptr<storage, f32, read_write> = access %outputs, 875i, 0u
-    store %878, -1.57079637050628662109f
-    %879:ptr<storage, f32, read_write> = access %outputs, 876i, 0u
-    store %879, -1.57079637050628662109f
-    %880:ptr<storage, f32, read_write> = access %outputs, 877i, 0u
-    store %880, -1.57079637050628662109f
-    %881:ptr<storage, f32, read_write> = access %outputs, 878i, 0u
-    store %881, -1.57079637050628662109f
-    %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.65342634916305541992f
-    %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.21442969143390655518f
-    %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.05439074710011482239f
-    %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.04496508091688156128f
-    %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.0306154303252696991f
-    %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.02419281192123889923f
-    %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.57079637050628662109f
-    %986:ptr<storage, f32, read_write> = access %outputs, 983i, 0u
-    store %986, -1.57079637050628662109f
-    %987:ptr<storage, f32, read_write> = access %outputs, 984i, 0u
-    store %987, -1.57079637050628662109f
-    %988:ptr<storage, f32, read_write> = access %outputs, 985i, 0u
-    store %988, -1.57079637050628662109f
-    %989:ptr<storage, f32, read_write> = access %outputs, 986i, 0u
-    store %989, -1.57079637050628662109f
-    %990:ptr<storage, f32, read_write> = access %outputs, 987i, 0u
-    store %990, -1.57079637050628662109f
-    %991:ptr<storage, f32, read_write> = access %outputs, 988i, 0u
-    store %991, -1.57079637050628662109f
-    %992:ptr<storage, f32, read_write> = access %outputs, 989i, 0u
-    store %992, -1.57079637050628662109f
-    %993:ptr<storage, f32, read_write> = access %outputs, 990i, 0u
-    store %993, -1.57079637050628662109f
-    %994:ptr<storage, f32, read_write> = access %outputs, 991i, 0u
-    store %994, -1.57079637050628662109f
-    %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/uniformity-analysis-pointer-parameters.wgsl.expected.ir.msl b/test/tint/benchmark/uniformity-analysis-pointer-parameters.wgsl.expected.ir.msl
deleted file mode 100644
index a66251b..0000000
--- a/test/tint/benchmark/uniformity-analysis-pointer-parameters.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,1681 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-void foo(thread int* const p0, thread int* const p1, thread int* const p2, thread int* const p3, thread int* const p4, thread int* const p5, thread int* const p6, thread int* const p7, thread int* const p8, thread int* const p9, thread int* const p10, thread int* const p11, thread int* const p12, thread int* const p13, thread int* const p14, thread int* const p15, thread int* const p16, thread int* const p17, thread int* const p18, thread int* const p19, thread int* const p20, thread int* const p21, thread int* const p22, thread int* const p23, thread int* const p24, thread int* const p25, thread int* const p26, thread int* const p27, thread int* const p28, thread int* const p29, thread int* const p30, thread int* const p31, thread int* const p32, thread int* const p33, thread int* const p34, thread int* const p35, thread int* const p36, thread int* const p37, thread int* const p38, thread int* const p39, thread int* const p40, thread int* const p41, thread int* const p42, thread int* const p43, thread int* const p44, thread int* const p45, thread int* const p46, thread int* const p47, thread int* const p48, thread int* const p49, thread int* const p50, thread int* const p51, thread int* const p52, thread int* const p53, thread int* const p54, thread int* const p55, thread int* const p56, thread int* const p57, thread int* const p58, thread int* const p59, thread int* const p60, thread int* const p61, thread int* const p62, thread int* const p63, thread int* const p64, thread int* const p65, thread int* const p66, thread int* const p67, thread int* const p68, thread int* const p69, thread int* const p70, thread int* const p71, thread int* const p72, thread int* const p73, thread int* const p74, thread int* const p75, thread int* const p76, thread int* const p77, thread int* const p78, thread int* const p79, thread int* const p80, thread int* const p81, thread int* const p82, thread int* const p83, thread int* const p84, thread int* const p85, thread int* const p86, thread int* const p87, thread int* const p88, thread int* const p89, thread int* const p90, thread int* const p91, thread int* const p92, thread int* const p93, thread int* const p94, thread int* const p95, thread int* const p96, thread int* const p97, thread int* const p98, thread int* const p99, thread int* const p100, thread int* const p101, thread int* const p102, thread int* const p103, thread int* const p104, thread int* const p105, thread int* const p106, thread int* const p107, thread int* const p108, thread int* const p109, thread int* const p110, thread int* const p111, thread int* const p112, thread int* const p113, thread int* const p114, thread int* const p115, thread int* const p116, thread int* const p117, thread int* const p118, thread int* const p119, thread int* const p120, thread int* const p121, thread int* const p122, thread int* const p123, thread int* const p124, thread int* const p125, thread int* const p126, thread int* const p127, thread int* const p128, thread int* const p129, thread int* const p130, thread int* const p131, thread int* const p132, thread int* const p133, thread int* const p134, thread int* const p135, thread int* const p136, thread int* const p137, thread int* const p138, thread int* const p139, thread int* const p140, thread int* const p141, thread int* const p142, thread int* const p143, thread int* const p144, thread int* const p145, thread int* const p146, thread int* const p147, thread int* const p148, thread int* const p149, thread int* const p150, thread int* const p151, thread int* const p152, thread int* const p153, thread int* const p154, thread int* const p155, thread int* const p156, thread int* const p157, thread int* const p158, thread int* const p159, thread int* const p160, thread int* const p161, thread int* const p162, thread int* const p163, thread int* const p164, thread int* const p165, thread int* const p166, thread int* const p167, thread int* const p168, thread int* const p169, thread int* const p170, thread int* const p171, thread int* const p172, thread int* const p173, thread int* const p174, thread int* const p175, thread int* const p176, thread int* const p177, thread int* const p178, thread int* const p179, thread int* const p180, thread int* const p181, thread int* const p182, thread int* const p183, thread int* const p184, thread int* const p185, thread int* const p186, thread int* const p187, thread int* const p188, thread int* const p189, thread int* const p190, thread int* const p191, thread int* const p192, thread int* const p193, thread int* const p194, thread int* const p195, thread int* const p196, thread int* const p197, thread int* const p198, thread int* const p199, thread int* const p200, thread int* const p201, thread int* const p202, thread int* const p203, thread int* const p204, thread int* const p205, thread int* const p206, thread int* const p207, thread int* const p208, thread int* const p209, thread int* const p210, thread int* const p211, thread int* const p212, thread int* const p213, thread int* const p214, thread int* const p215, thread int* const p216, thread int* const p217, thread int* const p218, thread int* const p219, thread int* const p220, thread int* const p221, thread int* const p222, thread int* const p223, thread int* const p224, thread int* const p225, thread int* const p226, thread int* const p227, thread int* const p228, thread int* const p229, thread int* const p230, thread int* const p231, thread int* const p232, thread int* const p233, thread int* const p234, thread int* const p235, thread int* const p236, thread int* const p237, thread int* const p238, thread int* const p239, thread int* const p240, thread int* const p241, thread int* const p242, thread int* const p243, thread int* const p244, thread int* const p245, thread int* const p246, thread int* const p247, thread int* const p248, thread int* const p249, thread int* const p250, thread int* const p251, thread int* const p252, thread int* const p253, thread int* const p254) {
-  int rhs = (((((((p0 + p1) + p2) + p3) + p4) + p5) + p6) + p7);
-  rhs = (rhs + (((((((p8 + p9) + p10) + p11) + p12) + p13) + p14) + p15));
-  rhs = (rhs + (((((((p16 + p17) + p18) + p19) + p20) + p21) + p22) + p23));
-  rhs = (rhs + (((((((p24 + p25) + p26) + p27) + p28) + p29) + p30) + p31));
-  rhs = (rhs + (((((((p32 + p33) + p34) + p35) + p36) + p37) + p38) + p39));
-  rhs = (rhs + (((((((p40 + p41) + p42) + p43) + p44) + p45) + p46) + p47));
-  rhs = (rhs + (((((((p48 + p49) + p50) + p51) + p52) + p53) + p54) + p55));
-  rhs = (rhs + (((((((p56 + p57) + p58) + p59) + p60) + p61) + p62) + p63));
-  rhs = (rhs + (((((((p64 + p65) + p66) + p67) + p68) + p69) + p70) + p71));
-  rhs = (rhs + (((((((p72 + p73) + p74) + p75) + p76) + p77) + p78) + p79));
-  rhs = (rhs + (((((((p80 + p81) + p82) + p83) + p84) + p85) + p86) + p87));
-  rhs = (rhs + (((((((p88 + p89) + p90) + p91) + p92) + p93) + p94) + p95));
-  rhs = (rhs + (((((((p96 + p97) + p98) + p99) + p100) + p101) + p102) + p103));
-  rhs = (rhs + (((((((p104 + p105) + p106) + p107) + p108) + p109) + p110) + p111));
-  rhs = (rhs + (((((((p112 + p113) + p114) + p115) + p116) + p117) + p118) + p119));
-  rhs = (rhs + (((((((p120 + p121) + p122) + p123) + p124) + p125) + p126) + p127));
-  rhs = (rhs + (((((((p128 + p129) + p130) + p131) + p132) + p133) + p134) + p135));
-  rhs = (rhs + (((((((p136 + p137) + p138) + p139) + p140) + p141) + p142) + p143));
-  rhs = (rhs + (((((((p144 + p145) + p146) + p147) + p148) + p149) + p150) + p151));
-  rhs = (rhs + (((((((p152 + p153) + p154) + p155) + p156) + p157) + p158) + p159));
-  rhs = (rhs + (((((((p160 + p161) + p162) + p163) + p164) + p165) + p166) + p167));
-  rhs = (rhs + (((((((p168 + p169) + p170) + p171) + p172) + p173) + p174) + p175));
-  rhs = (rhs + (((((((p176 + p177) + p178) + p179) + p180) + p181) + p182) + p183));
-  rhs = (rhs + (((((((p184 + p185) + p186) + p187) + p188) + p189) + p190) + p191));
-  rhs = (rhs + (((((((p192 + p193) + p194) + p195) + p196) + p197) + p198) + p199));
-  rhs = (rhs + (((((((p200 + p201) + p202) + p203) + p204) + p205) + p206) + p207));
-  rhs = (rhs + (((((((p208 + p209) + p210) + p211) + p212) + p213) + p214) + p215));
-  rhs = (rhs + (((((((p216 + p217) + p218) + p219) + p220) + p221) + p222) + p223));
-  rhs = (rhs + (((((((p224 + p225) + p226) + p227) + p228) + p229) + p230) + p231));
-  rhs = (rhs + (((((((p232 + p233) + p234) + p235) + p236) + p237) + p238) + p239));
-  rhs = (rhs + (((((((p240 + p241) + p242) + p243) + p244) + p245) + p246) + p247));
-  rhs = (rhs + ((((((p248 + p249) + p250) + p251) + p252) + p253) + p254));
-  p1 = rhs;
-  p2 = rhs;
-  p3 = rhs;
-  p4 = rhs;
-  p5 = rhs;
-  p6 = rhs;
-  p7 = rhs;
-  p8 = rhs;
-  p9 = rhs;
-  p10 = rhs;
-  p11 = rhs;
-  p12 = rhs;
-  p13 = rhs;
-  p14 = rhs;
-  p15 = rhs;
-  p16 = rhs;
-  p17 = rhs;
-  p18 = rhs;
-  p19 = rhs;
-  p20 = rhs;
-  p21 = rhs;
-  p22 = rhs;
-  p23 = rhs;
-  p24 = rhs;
-  p25 = rhs;
-  p26 = rhs;
-  p27 = rhs;
-  p28 = rhs;
-  p29 = rhs;
-  p30 = rhs;
-  p31 = rhs;
-  p32 = rhs;
-  p33 = rhs;
-  p34 = rhs;
-  p35 = rhs;
-  p36 = rhs;
-  p37 = rhs;
-  p38 = rhs;
-  p39 = rhs;
-  p40 = rhs;
-  p41 = rhs;
-  p42 = rhs;
-  p43 = rhs;
-  p44 = rhs;
-  p45 = rhs;
-  p46 = rhs;
-  p47 = rhs;
-  p48 = rhs;
-  p49 = rhs;
-  p50 = rhs;
-  p51 = rhs;
-  p52 = rhs;
-  p53 = rhs;
-  p54 = rhs;
-  p55 = rhs;
-  p56 = rhs;
-  p57 = rhs;
-  p58 = rhs;
-  p59 = rhs;
-  p60 = rhs;
-  p61 = rhs;
-  p62 = rhs;
-  p63 = rhs;
-  p64 = rhs;
-  p65 = rhs;
-  p66 = rhs;
-  p67 = rhs;
-  p68 = rhs;
-  p69 = rhs;
-  p70 = rhs;
-  p71 = rhs;
-  p72 = rhs;
-  p73 = rhs;
-  p74 = rhs;
-  p75 = rhs;
-  p76 = rhs;
-  p77 = rhs;
-  p78 = rhs;
-  p79 = rhs;
-  p80 = rhs;
-  p81 = rhs;
-  p82 = rhs;
-  p83 = rhs;
-  p84 = rhs;
-  p85 = rhs;
-  p86 = rhs;
-  p87 = rhs;
-  p88 = rhs;
-  p89 = rhs;
-  p90 = rhs;
-  p91 = rhs;
-  p92 = rhs;
-  p93 = rhs;
-  p94 = rhs;
-  p95 = rhs;
-  p96 = rhs;
-  p97 = rhs;
-  p98 = rhs;
-  p99 = rhs;
-  p100 = rhs;
-  p101 = rhs;
-  p102 = rhs;
-  p103 = rhs;
-  p104 = rhs;
-  p105 = rhs;
-  p106 = rhs;
-  p107 = rhs;
-  p108 = rhs;
-  p109 = rhs;
-  p110 = rhs;
-  p111 = rhs;
-  p112 = rhs;
-  p113 = rhs;
-  p114 = rhs;
-  p115 = rhs;
-  p116 = rhs;
-  p117 = rhs;
-  p118 = rhs;
-  p119 = rhs;
-  p120 = rhs;
-  p121 = rhs;
-  p122 = rhs;
-  p123 = rhs;
-  p124 = rhs;
-  p125 = rhs;
-  p126 = rhs;
-  p127 = rhs;
-  p128 = rhs;
-  p129 = rhs;
-  p130 = rhs;
-  p131 = rhs;
-  p132 = rhs;
-  p133 = rhs;
-  p134 = rhs;
-  p135 = rhs;
-  p136 = rhs;
-  p137 = rhs;
-  p138 = rhs;
-  p139 = rhs;
-  p140 = rhs;
-  p141 = rhs;
-  p142 = rhs;
-  p143 = rhs;
-  p144 = rhs;
-  p145 = rhs;
-  p146 = rhs;
-  p147 = rhs;
-  p148 = rhs;
-  p149 = rhs;
-  p150 = rhs;
-  p151 = rhs;
-  p152 = rhs;
-  p153 = rhs;
-  p154 = rhs;
-  p155 = rhs;
-  p156 = rhs;
-  p157 = rhs;
-  p158 = rhs;
-  p159 = rhs;
-  p160 = rhs;
-  p161 = rhs;
-  p162 = rhs;
-  p163 = rhs;
-  p164 = rhs;
-  p165 = rhs;
-  p166 = rhs;
-  p167 = rhs;
-  p168 = rhs;
-  p169 = rhs;
-  p170 = rhs;
-  p171 = rhs;
-  p172 = rhs;
-  p173 = rhs;
-  p174 = rhs;
-  p175 = rhs;
-  p176 = rhs;
-  p177 = rhs;
-  p178 = rhs;
-  p179 = rhs;
-  p180 = rhs;
-  p181 = rhs;
-  p182 = rhs;
-  p183 = rhs;
-  p184 = rhs;
-  p185 = rhs;
-  p186 = rhs;
-  p187 = rhs;
-  p188 = rhs;
-  p189 = rhs;
-  p190 = rhs;
-  p191 = rhs;
-  p192 = rhs;
-  p193 = rhs;
-  p194 = rhs;
-  p195 = rhs;
-  p196 = rhs;
-  p197 = rhs;
-  p198 = rhs;
-  p199 = rhs;
-  p200 = rhs;
-  p201 = rhs;
-  p202 = rhs;
-  p203 = rhs;
-  p204 = rhs;
-  p205 = rhs;
-  p206 = rhs;
-  p207 = rhs;
-  p208 = rhs;
-  p209 = rhs;
-  p210 = rhs;
-  p211 = rhs;
-  p212 = rhs;
-  p213 = rhs;
-  p214 = rhs;
-  p215 = rhs;
-  p216 = rhs;
-  p217 = rhs;
-  p218 = rhs;
-  p219 = rhs;
-  p220 = rhs;
-  p221 = rhs;
-  p222 = rhs;
-  p223 = rhs;
-  p224 = rhs;
-  p225 = rhs;
-  p226 = rhs;
-  p227 = rhs;
-  p228 = rhs;
-  p229 = rhs;
-  p230 = rhs;
-  p231 = rhs;
-  p232 = rhs;
-  p233 = rhs;
-  p234 = rhs;
-  p235 = rhs;
-  p236 = rhs;
-  p237 = rhs;
-  p238 = rhs;
-  p239 = rhs;
-  p240 = rhs;
-  p241 = rhs;
-  p242 = rhs;
-  p243 = rhs;
-  p244 = rhs;
-  p245 = rhs;
-  p246 = rhs;
-  p247 = rhs;
-  p248 = rhs;
-  p249 = rhs;
-  p250 = rhs;
-  p251 = rhs;
-  p252 = rhs;
-  p253 = rhs;
-  p254 = rhs;
-}
-void tint_symbol() {
-  int v0 = 0;
-  int v1 = 0;
-  int v2 = 0;
-  int v3 = 0;
-  int v4 = 0;
-  int v5 = 0;
-  int v6 = 0;
-  int v7 = 0;
-  int v8 = 0;
-  int v9 = 0;
-  int v10 = 0;
-  int v11 = 0;
-  int v12 = 0;
-  int v13 = 0;
-  int v14 = 0;
-  int v15 = 0;
-  int v16 = 0;
-  int v17 = 0;
-  int v18 = 0;
-  int v19 = 0;
-  int v20 = 0;
-  int v21 = 0;
-  int v22 = 0;
-  int v23 = 0;
-  int v24 = 0;
-  int v25 = 0;
-  int v26 = 0;
-  int v27 = 0;
-  int v28 = 0;
-  int v29 = 0;
-  int v30 = 0;
-  int v31 = 0;
-  int v32 = 0;
-  int v33 = 0;
-  int v34 = 0;
-  int v35 = 0;
-  int v36 = 0;
-  int v37 = 0;
-  int v38 = 0;
-  int v39 = 0;
-  int v40 = 0;
-  int v41 = 0;
-  int v42 = 0;
-  int v43 = 0;
-  int v44 = 0;
-  int v45 = 0;
-  int v46 = 0;
-  int v47 = 0;
-  int v48 = 0;
-  int v49 = 0;
-  int v50 = 0;
-  int v51 = 0;
-  int v52 = 0;
-  int v53 = 0;
-  int v54 = 0;
-  int v55 = 0;
-  int v56 = 0;
-  int v57 = 0;
-  int v58 = 0;
-  int v59 = 0;
-  int v60 = 0;
-  int v61 = 0;
-  int v62 = 0;
-  int v63 = 0;
-  int v64 = 0;
-  int v65 = 0;
-  int v66 = 0;
-  int v67 = 0;
-  int v68 = 0;
-  int v69 = 0;
-  int v70 = 0;
-  int v71 = 0;
-  int v72 = 0;
-  int v73 = 0;
-  int v74 = 0;
-  int v75 = 0;
-  int v76 = 0;
-  int v77 = 0;
-  int v78 = 0;
-  int v79 = 0;
-  int v80 = 0;
-  int v81 = 0;
-  int v82 = 0;
-  int v83 = 0;
-  int v84 = 0;
-  int v85 = 0;
-  int v86 = 0;
-  int v87 = 0;
-  int v88 = 0;
-  int v89 = 0;
-  int v90 = 0;
-  int v91 = 0;
-  int v92 = 0;
-  int v93 = 0;
-  int v94 = 0;
-  int v95 = 0;
-  int v96 = 0;
-  int v97 = 0;
-  int v98 = 0;
-  int v99 = 0;
-  int v100 = 0;
-  int v101 = 0;
-  int v102 = 0;
-  int v103 = 0;
-  int v104 = 0;
-  int v105 = 0;
-  int v106 = 0;
-  int v107 = 0;
-  int v108 = 0;
-  int v109 = 0;
-  int v110 = 0;
-  int v111 = 0;
-  int v112 = 0;
-  int v113 = 0;
-  int v114 = 0;
-  int v115 = 0;
-  int v116 = 0;
-  int v117 = 0;
-  int v118 = 0;
-  int v119 = 0;
-  int v120 = 0;
-  int v121 = 0;
-  int v122 = 0;
-  int v123 = 0;
-  int v124 = 0;
-  int v125 = 0;
-  int v126 = 0;
-  int v127 = 0;
-  int v128 = 0;
-  int v129 = 0;
-  int v130 = 0;
-  int v131 = 0;
-  int v132 = 0;
-  int v133 = 0;
-  int v134 = 0;
-  int v135 = 0;
-  int v136 = 0;
-  int v137 = 0;
-  int v138 = 0;
-  int v139 = 0;
-  int v140 = 0;
-  int v141 = 0;
-  int v142 = 0;
-  int v143 = 0;
-  int v144 = 0;
-  int v145 = 0;
-  int v146 = 0;
-  int v147 = 0;
-  int v148 = 0;
-  int v149 = 0;
-  int v150 = 0;
-  int v151 = 0;
-  int v152 = 0;
-  int v153 = 0;
-  int v154 = 0;
-  int v155 = 0;
-  int v156 = 0;
-  int v157 = 0;
-  int v158 = 0;
-  int v159 = 0;
-  int v160 = 0;
-  int v161 = 0;
-  int v162 = 0;
-  int v163 = 0;
-  int v164 = 0;
-  int v165 = 0;
-  int v166 = 0;
-  int v167 = 0;
-  int v168 = 0;
-  int v169 = 0;
-  int v170 = 0;
-  int v171 = 0;
-  int v172 = 0;
-  int v173 = 0;
-  int v174 = 0;
-  int v175 = 0;
-  int v176 = 0;
-  int v177 = 0;
-  int v178 = 0;
-  int v179 = 0;
-  int v180 = 0;
-  int v181 = 0;
-  int v182 = 0;
-  int v183 = 0;
-  int v184 = 0;
-  int v185 = 0;
-  int v186 = 0;
-  int v187 = 0;
-  int v188 = 0;
-  int v189 = 0;
-  int v190 = 0;
-  int v191 = 0;
-  int v192 = 0;
-  int v193 = 0;
-  int v194 = 0;
-  int v195 = 0;
-  int v196 = 0;
-  int v197 = 0;
-  int v198 = 0;
-  int v199 = 0;
-  int v200 = 0;
-  int v201 = 0;
-  int v202 = 0;
-  int v203 = 0;
-  int v204 = 0;
-  int v205 = 0;
-  int v206 = 0;
-  int v207 = 0;
-  int v208 = 0;
-  int v209 = 0;
-  int v210 = 0;
-  int v211 = 0;
-  int v212 = 0;
-  int v213 = 0;
-  int v214 = 0;
-  int v215 = 0;
-  int v216 = 0;
-  int v217 = 0;
-  int v218 = 0;
-  int v219 = 0;
-  int v220 = 0;
-  int v221 = 0;
-  int v222 = 0;
-  int v223 = 0;
-  int v224 = 0;
-  int v225 = 0;
-  int v226 = 0;
-  int v227 = 0;
-  int v228 = 0;
-  int v229 = 0;
-  int v230 = 0;
-  int v231 = 0;
-  int v232 = 0;
-  int v233 = 0;
-  int v234 = 0;
-  int v235 = 0;
-  int v236 = 0;
-  int v237 = 0;
-  int v238 = 0;
-  int v239 = 0;
-  int v240 = 0;
-  int v241 = 0;
-  int v242 = 0;
-  int v243 = 0;
-  int v244 = 0;
-  int v245 = 0;
-  int v246 = 0;
-  int v247 = 0;
-  int v248 = 0;
-  int v249 = 0;
-  int v250 = 0;
-  int v251 = 0;
-  int v252 = 0;
-  int v253 = 0;
-  int v254 = 0;
-  foo(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63, v64, v65, v66, v67, v68, v69, v70, v71, v72, v73, v74, v75, v76, v77, v78, v79, v80, v81, v82, v83, v84, v85, v86, v87, v88, v89, v90, v91, v92, v93, v94, v95, v96, v97, v98, v99, v100, v101, v102, v103, v104, v105, v106, v107, v108, v109, v110, v111, v112, v113, v114, v115, v116, v117, v118, v119, v120, v121, v122, v123, v124, v125, v126, v127, v128, v129, v130, v131, v132, v133, v134, v135, v136, v137, v138, v139, v140, v141, v142, v143, v144, v145, v146, v147, v148, v149, v150, v151, v152, v153, v154, v155, v156, v157, v158, v159, v160, v161, v162, v163, v164, v165, v166, v167, v168, v169, v170, v171, v172, v173, v174, v175, v176, v177, v178, v179, v180, v181, v182, v183, v184, v185, v186, v187, v188, v189, v190, v191, v192, v193, v194, v195, v196, v197, v198, v199, v200, v201, v202, v203, v204, v205, v206, v207, v208, v209, v210, v211, v212, v213, v214, v215, v216, v217, v218, v219, v220, v221, v222, v223, v224, v225, v226, v227, v228, v229, v230, v231, v232, v233, v234, v235, v236, v237, v238, v239, v240, v241, v242, v243, v244, v245, v246, v247, v248, v249, v250, v251, v252, v253, v254);
-  if ((v254 == 0)) {
-    threadgroup_barrier(mem_flags::mem_threadgroup);
-  }
-}
-program_source:5:23: error: invalid operands to binary expression ('int *const' and 'int *const')
-  int rhs = (((((((p0 + p1) + p2) + p3) + p4) + p5) + p6) + p7);
-                   ~~ ^ ~~
-program_source:6:26: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p8 + p9) + p10) + p11) + p12) + p13) + p14) + p15));
-                      ~~ ^ ~~
-program_source:7:27: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p16 + p17) + p18) + p19) + p20) + p21) + p22) + p23));
-                      ~~~ ^ ~~~
-program_source:8:27: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p24 + p25) + p26) + p27) + p28) + p29) + p30) + p31));
-                      ~~~ ^ ~~~
-program_source:9:27: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p32 + p33) + p34) + p35) + p36) + p37) + p38) + p39));
-                      ~~~ ^ ~~~
-program_source:10:27: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p40 + p41) + p42) + p43) + p44) + p45) + p46) + p47));
-                      ~~~ ^ ~~~
-program_source:11:27: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p48 + p49) + p50) + p51) + p52) + p53) + p54) + p55));
-                      ~~~ ^ ~~~
-program_source:12:27: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p56 + p57) + p58) + p59) + p60) + p61) + p62) + p63));
-                      ~~~ ^ ~~~
-program_source:13:27: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p64 + p65) + p66) + p67) + p68) + p69) + p70) + p71));
-                      ~~~ ^ ~~~
-program_source:14:27: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p72 + p73) + p74) + p75) + p76) + p77) + p78) + p79));
-                      ~~~ ^ ~~~
-program_source:15:27: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p80 + p81) + p82) + p83) + p84) + p85) + p86) + p87));
-                      ~~~ ^ ~~~
-program_source:16:27: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p88 + p89) + p90) + p91) + p92) + p93) + p94) + p95));
-                      ~~~ ^ ~~~
-program_source:17:27: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p96 + p97) + p98) + p99) + p100) + p101) + p102) + p103));
-                      ~~~ ^ ~~~
-program_source:18:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p104 + p105) + p106) + p107) + p108) + p109) + p110) + p111));
-                      ~~~~ ^ ~~~~
-program_source:19:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p112 + p113) + p114) + p115) + p116) + p117) + p118) + p119));
-                      ~~~~ ^ ~~~~
-program_source:20:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p120 + p121) + p122) + p123) + p124) + p125) + p126) + p127));
-                      ~~~~ ^ ~~~~
-program_source:21:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p128 + p129) + p130) + p131) + p132) + p133) + p134) + p135));
-                      ~~~~ ^ ~~~~
-program_source:22:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p136 + p137) + p138) + p139) + p140) + p141) + p142) + p143));
-                      ~~~~ ^ ~~~~
-program_source:23:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p144 + p145) + p146) + p147) + p148) + p149) + p150) + p151));
-                      ~~~~ ^ ~~~~
-program_source:24:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p152 + p153) + p154) + p155) + p156) + p157) + p158) + p159));
-                      ~~~~ ^ ~~~~
-program_source:25:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p160 + p161) + p162) + p163) + p164) + p165) + p166) + p167));
-                      ~~~~ ^ ~~~~
-program_source:26:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p168 + p169) + p170) + p171) + p172) + p173) + p174) + p175));
-                      ~~~~ ^ ~~~~
-program_source:27:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p176 + p177) + p178) + p179) + p180) + p181) + p182) + p183));
-                      ~~~~ ^ ~~~~
-program_source:28:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p184 + p185) + p186) + p187) + p188) + p189) + p190) + p191));
-                      ~~~~ ^ ~~~~
-program_source:29:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p192 + p193) + p194) + p195) + p196) + p197) + p198) + p199));
-                      ~~~~ ^ ~~~~
-program_source:30:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p200 + p201) + p202) + p203) + p204) + p205) + p206) + p207));
-                      ~~~~ ^ ~~~~
-program_source:31:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p208 + p209) + p210) + p211) + p212) + p213) + p214) + p215));
-                      ~~~~ ^ ~~~~
-program_source:32:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p216 + p217) + p218) + p219) + p220) + p221) + p222) + p223));
-                      ~~~~ ^ ~~~~
-program_source:33:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p224 + p225) + p226) + p227) + p228) + p229) + p230) + p231));
-                      ~~~~ ^ ~~~~
-program_source:34:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p232 + p233) + p234) + p235) + p236) + p237) + p238) + p239));
-                      ~~~~ ^ ~~~~
-program_source:35:28: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + (((((((p240 + p241) + p242) + p243) + p244) + p245) + p246) + p247));
-                      ~~~~ ^ ~~~~
-program_source:36:27: error: invalid operands to binary expression ('int *const' and 'int *const')
-  rhs = (rhs + ((((((p248 + p249) + p250) + p251) + p252) + p253) + p254));
-                     ~~~~ ^ ~~~~
-program_source:37:6: error: cannot assign to variable 'p1' with const-qualified type 'int *const'
-  p1 = rhs;
-  ~~ ^
-program_source:4:50: note: variable 'p1' declared const here
-program_source:38:6: error: cannot assign to variable 'p2' with const-qualified type 'int *const'
-  p2 = rhs;
-  ~~ ^
-program_source:4:72: note: variable 'p2' declared const here
-program_source:39:6: error: cannot assign to variable 'p3' with const-qualified type 'int *const'
-  p3 = rhs;
-  ~~ ^
-program_source:4:94: note: variable 'p3' declared const here
-program_source:40:6: error: cannot assign to variable 'p4' with const-qualified type 'int *const'
-  p4 = rhs;
-  ~~ ^
-program_source:4:116: note: variable 'p4' declared const here
-program_source:41:6: error: cannot assign to variable 'p5' with const-qualified type 'int *const'
-  p5 = rhs;
-  ~~ ^
-program_source:4:138: note: variable 'p5' declared const here
-program_source:42:6: error: cannot assign to variable 'p6' with const-qualified type 'int *const'
-  p6 = rhs;
-  ~~ ^
-program_source:4:160: note: variable 'p6' declared const here
-program_source:43:6: error: cannot assign to variable 'p7' with const-qualified type 'int *const'
-  p7 = rhs;
-  ~~ ^
-program_source:4:182: note: variable 'p7' declared const here
-program_source:44:6: error: cannot assign to variable 'p8' with const-qualified type 'int *const'
-  p8 = rhs;
-  ~~ ^
-program_source:4:204: note: variable 'p8' declared const here
-program_source:45:6: error: cannot assign to variable 'p9' with const-qualified type 'int *const'
-  p9 = rhs;
-  ~~ ^
-program_source:4:226: note: variable 'p9' declared const here
-program_source:46:7: error: cannot assign to variable 'p10' with const-qualified type 'int *const'
-  p10 = rhs;
-  ~~~ ^
-program_source:4:248: note: variable 'p10' declared const here
-program_source:47:7: error: cannot assign to variable 'p11' with const-qualified type 'int *const'
-  p11 = rhs;
-  ~~~ ^
-program_source:4:271: note: variable 'p11' declared const here
-program_source:48:7: error: cannot assign to variable 'p12' with const-qualified type 'int *const'
-  p12 = rhs;
-  ~~~ ^
-program_source:4:294: note: variable 'p12' declared const here
-program_source:49:7: error: cannot assign to variable 'p13' with const-qualified type 'int *const'
-  p13 = rhs;
-  ~~~ ^
-program_source:4:317: note: variable 'p13' declared const here
-program_source:50:7: error: cannot assign to variable 'p14' with const-qualified type 'int *const'
-  p14 = rhs;
-  ~~~ ^
-program_source:4:340: note: variable 'p14' declared const here
-program_source:51:7: error: cannot assign to variable 'p15' with const-qualified type 'int *const'
-  p15 = rhs;
-  ~~~ ^
-program_source:4:363: note: variable 'p15' declared const here
-program_source:52:7: error: cannot assign to variable 'p16' with const-qualified type 'int *const'
-  p16 = rhs;
-  ~~~ ^
-program_source:4:386: note: variable 'p16' declared const here
-program_source:53:7: error: cannot assign to variable 'p17' with const-qualified type 'int *const'
-  p17 = rhs;
-  ~~~ ^
-program_source:4:409: note: variable 'p17' declared const here
-program_source:54:7: error: cannot assign to variable 'p18' with const-qualified type 'int *const'
-  p18 = rhs;
-  ~~~ ^
-program_source:4:432: note: variable 'p18' declared const here
-program_source:55:7: error: cannot assign to variable 'p19' with const-qualified type 'int *const'
-  p19 = rhs;
-  ~~~ ^
-program_source:4:455: note: variable 'p19' declared const here
-program_source:56:7: error: cannot assign to variable 'p20' with const-qualified type 'int *const'
-  p20 = rhs;
-  ~~~ ^
-program_source:4:478: note: variable 'p20' declared const here
-program_source:57:7: error: cannot assign to variable 'p21' with const-qualified type 'int *const'
-  p21 = rhs;
-  ~~~ ^
-program_source:4:501: note: variable 'p21' declared const here
-program_source:58:7: error: cannot assign to variable 'p22' with const-qualified type 'int *const'
-  p22 = rhs;
-  ~~~ ^
-program_source:4:524: note: variable 'p22' declared const here
-program_source:59:7: error: cannot assign to variable 'p23' with const-qualified type 'int *const'
-  p23 = rhs;
-  ~~~ ^
-program_source:4:547: note: variable 'p23' declared const here
-program_source:60:7: error: cannot assign to variable 'p24' with const-qualified type 'int *const'
-  p24 = rhs;
-  ~~~ ^
-program_source:4:570: note: variable 'p24' declared const here
-program_source:61:7: error: cannot assign to variable 'p25' with const-qualified type 'int *const'
-  p25 = rhs;
-  ~~~ ^
-program_source:4:593: note: variable 'p25' declared const here
-program_source:62:7: error: cannot assign to variable 'p26' with const-qualified type 'int *const'
-  p26 = rhs;
-  ~~~ ^
-program_source:4:616: note: variable 'p26' declared const here
-program_source:63:7: error: cannot assign to variable 'p27' with const-qualified type 'int *const'
-  p27 = rhs;
-  ~~~ ^
-program_source:4:639: note: variable 'p27' declared const here
-program_source:64:7: error: cannot assign to variable 'p28' with const-qualified type 'int *const'
-  p28 = rhs;
-  ~~~ ^
-program_source:4:662: note: variable 'p28' declared const here
-program_source:65:7: error: cannot assign to variable 'p29' with const-qualified type 'int *const'
-  p29 = rhs;
-  ~~~ ^
-program_source:4:685: note: variable 'p29' declared const here
-program_source:66:7: error: cannot assign to variable 'p30' with const-qualified type 'int *const'
-  p30 = rhs;
-  ~~~ ^
-program_source:4:708: note: variable 'p30' declared const here
-program_source:67:7: error: cannot assign to variable 'p31' with const-qualified type 'int *const'
-  p31 = rhs;
-  ~~~ ^
-program_source:4:731: note: variable 'p31' declared const here
-program_source:68:7: error: cannot assign to variable 'p32' with const-qualified type 'int *const'
-  p32 = rhs;
-  ~~~ ^
-program_source:4:754: note: variable 'p32' declared const here
-program_source:69:7: error: cannot assign to variable 'p33' with const-qualified type 'int *const'
-  p33 = rhs;
-  ~~~ ^
-program_source:4:777: note: variable 'p33' declared const here
-program_source:70:7: error: cannot assign to variable 'p34' with const-qualified type 'int *const'
-  p34 = rhs;
-  ~~~ ^
-program_source:4:800: note: variable 'p34' declared const here
-program_source:71:7: error: cannot assign to variable 'p35' with const-qualified type 'int *const'
-  p35 = rhs;
-  ~~~ ^
-program_source:4:823: note: variable 'p35' declared const here
-program_source:72:7: error: cannot assign to variable 'p36' with const-qualified type 'int *const'
-  p36 = rhs;
-  ~~~ ^
-program_source:4:846: note: variable 'p36' declared const here
-program_source:73:7: error: cannot assign to variable 'p37' with const-qualified type 'int *const'
-  p37 = rhs;
-  ~~~ ^
-program_source:4:869: note: variable 'p37' declared const here
-program_source:74:7: error: cannot assign to variable 'p38' with const-qualified type 'int *const'
-  p38 = rhs;
-  ~~~ ^
-program_source:4:892: note: variable 'p38' declared const here
-program_source:75:7: error: cannot assign to variable 'p39' with const-qualified type 'int *const'
-  p39 = rhs;
-  ~~~ ^
-program_source:4:915: note: variable 'p39' declared const here
-program_source:76:7: error: cannot assign to variable 'p40' with const-qualified type 'int *const'
-  p40 = rhs;
-  ~~~ ^
-program_source:4:938: note: variable 'p40' declared const here
-program_source:77:7: error: cannot assign to variable 'p41' with const-qualified type 'int *const'
-  p41 = rhs;
-  ~~~ ^
-program_source:4:961: note: variable 'p41' declared const here
-program_source:78:7: error: cannot assign to variable 'p42' with const-qualified type 'int *const'
-  p42 = rhs;
-  ~~~ ^
-program_source:4:984: note: variable 'p42' declared const here
-program_source:79:7: error: cannot assign to variable 'p43' with const-qualified type 'int *const'
-  p43 = rhs;
-  ~~~ ^
-program_source:4:1007: note: variable 'p43' declared const here
-program_source:80:7: error: cannot assign to variable 'p44' with const-qualified type 'int *const'
-  p44 = rhs;
-  ~~~ ^
-program_source:4:1030: note: variable 'p44' declared const here
-program_source:81:7: error: cannot assign to variable 'p45' with const-qualified type 'int *const'
-  p45 = rhs;
-  ~~~ ^
-program_source:4:1053: note: variable 'p45' declared const here
-program_source:82:7: error: cannot assign to variable 'p46' with const-qualified type 'int *const'
-  p46 = rhs;
-  ~~~ ^
-program_source:4:1076: note: variable 'p46' declared const here
-program_source:83:7: error: cannot assign to variable 'p47' with const-qualified type 'int *const'
-  p47 = rhs;
-  ~~~ ^
-program_source:4:1099: note: variable 'p47' declared const here
-program_source:84:7: error: cannot assign to variable 'p48' with const-qualified type 'int *const'
-  p48 = rhs;
-  ~~~ ^
-program_source:4:1122: note: variable 'p48' declared const here
-program_source:85:7: error: cannot assign to variable 'p49' with const-qualified type 'int *const'
-  p49 = rhs;
-  ~~~ ^
-program_source:4:1145: note: variable 'p49' declared const here
-program_source:86:7: error: cannot assign to variable 'p50' with const-qualified type 'int *const'
-  p50 = rhs;
-  ~~~ ^
-program_source:4:1168: note: variable 'p50' declared const here
-program_source:87:7: error: cannot assign to variable 'p51' with const-qualified type 'int *const'
-  p51 = rhs;
-  ~~~ ^
-program_source:4:1191: note: variable 'p51' declared const here
-program_source:88:7: error: cannot assign to variable 'p52' with const-qualified type 'int *const'
-  p52 = rhs;
-  ~~~ ^
-program_source:4:1214: note: variable 'p52' declared const here
-program_source:89:7: error: cannot assign to variable 'p53' with const-qualified type 'int *const'
-  p53 = rhs;
-  ~~~ ^
-program_source:4:1237: note: variable 'p53' declared const here
-program_source:90:7: error: cannot assign to variable 'p54' with const-qualified type 'int *const'
-  p54 = rhs;
-  ~~~ ^
-program_source:4:1260: note: variable 'p54' declared const here
-program_source:91:7: error: cannot assign to variable 'p55' with const-qualified type 'int *const'
-  p55 = rhs;
-  ~~~ ^
-program_source:4:1283: note: variable 'p55' declared const here
-program_source:92:7: error: cannot assign to variable 'p56' with const-qualified type 'int *const'
-  p56 = rhs;
-  ~~~ ^
-program_source:4:1306: note: variable 'p56' declared const here
-program_source:93:7: error: cannot assign to variable 'p57' with const-qualified type 'int *const'
-  p57 = rhs;
-  ~~~ ^
-program_source:4:1329: note: variable 'p57' declared const here
-program_source:94:7: error: cannot assign to variable 'p58' with const-qualified type 'int *const'
-  p58 = rhs;
-  ~~~ ^
-program_source:4:1352: note: variable 'p58' declared const here
-program_source:95:7: error: cannot assign to variable 'p59' with const-qualified type 'int *const'
-  p59 = rhs;
-  ~~~ ^
-program_source:4:1375: note: variable 'p59' declared const here
-program_source:96:7: error: cannot assign to variable 'p60' with const-qualified type 'int *const'
-  p60 = rhs;
-  ~~~ ^
-program_source:4:1398: note: variable 'p60' declared const here
-program_source:97:7: error: cannot assign to variable 'p61' with const-qualified type 'int *const'
-  p61 = rhs;
-  ~~~ ^
-program_source:4:1421: note: variable 'p61' declared const here
-program_source:98:7: error: cannot assign to variable 'p62' with const-qualified type 'int *const'
-  p62 = rhs;
-  ~~~ ^
-program_source:4:1444: note: variable 'p62' declared const here
-program_source:99:7: error: cannot assign to variable 'p63' with const-qualified type 'int *const'
-  p63 = rhs;
-  ~~~ ^
-program_source:4:1467: note: variable 'p63' declared const here
-program_source:100:7: error: cannot assign to variable 'p64' with const-qualified type 'int *const'
-  p64 = rhs;
-  ~~~ ^
-program_source:4:1490: note: variable 'p64' declared const here
-program_source:101:7: error: cannot assign to variable 'p65' with const-qualified type 'int *const'
-  p65 = rhs;
-  ~~~ ^
-program_source:4:1513: note: variable 'p65' declared const here
-program_source:102:7: error: cannot assign to variable 'p66' with const-qualified type 'int *const'
-  p66 = rhs;
-  ~~~ ^
-program_source:4:1536: note: variable 'p66' declared const here
-program_source:103:7: error: cannot assign to variable 'p67' with const-qualified type 'int *const'
-  p67 = rhs;
-  ~~~ ^
-program_source:4:1559: note: variable 'p67' declared const here
-program_source:104:7: error: cannot assign to variable 'p68' with const-qualified type 'int *const'
-  p68 = rhs;
-  ~~~ ^
-program_source:4:1582: note: variable 'p68' declared const here
-program_source:105:7: error: cannot assign to variable 'p69' with const-qualified type 'int *const'
-  p69 = rhs;
-  ~~~ ^
-program_source:4:1605: note: variable 'p69' declared const here
-program_source:106:7: error: cannot assign to variable 'p70' with const-qualified type 'int *const'
-  p70 = rhs;
-  ~~~ ^
-program_source:4:1628: note: variable 'p70' declared const here
-program_source:107:7: error: cannot assign to variable 'p71' with const-qualified type 'int *const'
-  p71 = rhs;
-  ~~~ ^
-program_source:4:1651: note: variable 'p71' declared const here
-program_source:108:7: error: cannot assign to variable 'p72' with const-qualified type 'int *const'
-  p72 = rhs;
-  ~~~ ^
-program_source:4:1674: note: variable 'p72' declared const here
-program_source:109:7: error: cannot assign to variable 'p73' with const-qualified type 'int *const'
-  p73 = rhs;
-  ~~~ ^
-program_source:4:1697: note: variable 'p73' declared const here
-program_source:110:7: error: cannot assign to variable 'p74' with const-qualified type 'int *const'
-  p74 = rhs;
-  ~~~ ^
-program_source:4:1720: note: variable 'p74' declared const here
-program_source:111:7: error: cannot assign to variable 'p75' with const-qualified type 'int *const'
-  p75 = rhs;
-  ~~~ ^
-program_source:4:1743: note: variable 'p75' declared const here
-program_source:112:7: error: cannot assign to variable 'p76' with const-qualified type 'int *const'
-  p76 = rhs;
-  ~~~ ^
-program_source:4:1766: note: variable 'p76' declared const here
-program_source:113:7: error: cannot assign to variable 'p77' with const-qualified type 'int *const'
-  p77 = rhs;
-  ~~~ ^
-program_source:4:1789: note: variable 'p77' declared const here
-program_source:114:7: error: cannot assign to variable 'p78' with const-qualified type 'int *const'
-  p78 = rhs;
-  ~~~ ^
-program_source:4:1812: note: variable 'p78' declared const here
-program_source:115:7: error: cannot assign to variable 'p79' with const-qualified type 'int *const'
-  p79 = rhs;
-  ~~~ ^
-program_source:4:1835: note: variable 'p79' declared const here
-program_source:116:7: error: cannot assign to variable 'p80' with const-qualified type 'int *const'
-  p80 = rhs;
-  ~~~ ^
-program_source:4:1858: note: variable 'p80' declared const here
-program_source:117:7: error: cannot assign to variable 'p81' with const-qualified type 'int *const'
-  p81 = rhs;
-  ~~~ ^
-program_source:4:1881: note: variable 'p81' declared const here
-program_source:118:7: error: cannot assign to variable 'p82' with const-qualified type 'int *const'
-  p82 = rhs;
-  ~~~ ^
-program_source:4:1904: note: variable 'p82' declared const here
-program_source:119:7: error: cannot assign to variable 'p83' with const-qualified type 'int *const'
-  p83 = rhs;
-  ~~~ ^
-program_source:4:1927: note: variable 'p83' declared const here
-program_source:120:7: error: cannot assign to variable 'p84' with const-qualified type 'int *const'
-  p84 = rhs;
-  ~~~ ^
-program_source:4:1950: note: variable 'p84' declared const here
-program_source:121:7: error: cannot assign to variable 'p85' with const-qualified type 'int *const'
-  p85 = rhs;
-  ~~~ ^
-program_source:4:1973: note: variable 'p85' declared const here
-program_source:122:7: error: cannot assign to variable 'p86' with const-qualified type 'int *const'
-  p86 = rhs;
-  ~~~ ^
-program_source:4:1996: note: variable 'p86' declared const here
-program_source:123:7: error: cannot assign to variable 'p87' with const-qualified type 'int *const'
-  p87 = rhs;
-  ~~~ ^
-program_source:4:2019: note: variable 'p87' declared const here
-program_source:124:7: error: cannot assign to variable 'p88' with const-qualified type 'int *const'
-  p88 = rhs;
-  ~~~ ^
-program_source:4:2042: note: variable 'p88' declared const here
-program_source:125:7: error: cannot assign to variable 'p89' with const-qualified type 'int *const'
-  p89 = rhs;
-  ~~~ ^
-program_source:4:2065: note: variable 'p89' declared const here
-program_source:126:7: error: cannot assign to variable 'p90' with const-qualified type 'int *const'
-  p90 = rhs;
-  ~~~ ^
-program_source:4:2088: note: variable 'p90' declared const here
-program_source:127:7: error: cannot assign to variable 'p91' with const-qualified type 'int *const'
-  p91 = rhs;
-  ~~~ ^
-program_source:4:2111: note: variable 'p91' declared const here
-program_source:128:7: error: cannot assign to variable 'p92' with const-qualified type 'int *const'
-  p92 = rhs;
-  ~~~ ^
-program_source:4:2134: note: variable 'p92' declared const here
-program_source:129:7: error: cannot assign to variable 'p93' with const-qualified type 'int *const'
-  p93 = rhs;
-  ~~~ ^
-program_source:4:2157: note: variable 'p93' declared const here
-program_source:130:7: error: cannot assign to variable 'p94' with const-qualified type 'int *const'
-  p94 = rhs;
-  ~~~ ^
-program_source:4:2180: note: variable 'p94' declared const here
-program_source:131:7: error: cannot assign to variable 'p95' with const-qualified type 'int *const'
-  p95 = rhs;
-  ~~~ ^
-program_source:4:2203: note: variable 'p95' declared const here
-program_source:132:7: error: cannot assign to variable 'p96' with const-qualified type 'int *const'
-  p96 = rhs;
-  ~~~ ^
-program_source:4:2226: note: variable 'p96' declared const here
-program_source:133:7: error: cannot assign to variable 'p97' with const-qualified type 'int *const'
-  p97 = rhs;
-  ~~~ ^
-program_source:4:2249: note: variable 'p97' declared const here
-program_source:134:7: error: cannot assign to variable 'p98' with const-qualified type 'int *const'
-  p98 = rhs;
-  ~~~ ^
-program_source:4:2272: note: variable 'p98' declared const here
-program_source:135:7: error: cannot assign to variable 'p99' with const-qualified type 'int *const'
-  p99 = rhs;
-  ~~~ ^
-program_source:4:2295: note: variable 'p99' declared const here
-program_source:136:8: error: cannot assign to variable 'p100' with const-qualified type 'int *const'
-  p100 = rhs;
-  ~~~~ ^
-program_source:4:2318: note: variable 'p100' declared const here
-program_source:137:8: error: cannot assign to variable 'p101' with const-qualified type 'int *const'
-  p101 = rhs;
-  ~~~~ ^
-program_source:4:2342: note: variable 'p101' declared const here
-program_source:138:8: error: cannot assign to variable 'p102' with const-qualified type 'int *const'
-  p102 = rhs;
-  ~~~~ ^
-program_source:4:2366: note: variable 'p102' declared const here
-program_source:139:8: error: cannot assign to variable 'p103' with const-qualified type 'int *const'
-  p103 = rhs;
-  ~~~~ ^
-program_source:4:2390: note: variable 'p103' declared const here
-program_source:140:8: error: cannot assign to variable 'p104' with const-qualified type 'int *const'
-  p104 = rhs;
-  ~~~~ ^
-program_source:4:2414: note: variable 'p104' declared const here
-program_source:141:8: error: cannot assign to variable 'p105' with const-qualified type 'int *const'
-  p105 = rhs;
-  ~~~~ ^
-program_source:4:2438: note: variable 'p105' declared const here
-program_source:142:8: error: cannot assign to variable 'p106' with const-qualified type 'int *const'
-  p106 = rhs;
-  ~~~~ ^
-program_source:4:2462: note: variable 'p106' declared const here
-program_source:143:8: error: cannot assign to variable 'p107' with const-qualified type 'int *const'
-  p107 = rhs;
-  ~~~~ ^
-program_source:4:2486: note: variable 'p107' declared const here
-program_source:144:8: error: cannot assign to variable 'p108' with const-qualified type 'int *const'
-  p108 = rhs;
-  ~~~~ ^
-program_source:4:2510: note: variable 'p108' declared const here
-program_source:145:8: error: cannot assign to variable 'p109' with const-qualified type 'int *const'
-  p109 = rhs;
-  ~~~~ ^
-program_source:4:2534: note: variable 'p109' declared const here
-program_source:146:8: error: cannot assign to variable 'p110' with const-qualified type 'int *const'
-  p110 = rhs;
-  ~~~~ ^
-program_source:4:2558: note: variable 'p110' declared const here
-program_source:147:8: error: cannot assign to variable 'p111' with const-qualified type 'int *const'
-  p111 = rhs;
-  ~~~~ ^
-program_source:4:2582: note: variable 'p111' declared const here
-program_source:148:8: error: cannot assign to variable 'p112' with const-qualified type 'int *const'
-  p112 = rhs;
-  ~~~~ ^
-program_source:4:2606: note: variable 'p112' declared const here
-program_source:149:8: error: cannot assign to variable 'p113' with const-qualified type 'int *const'
-  p113 = rhs;
-  ~~~~ ^
-program_source:4:2630: note: variable 'p113' declared const here
-program_source:150:8: error: cannot assign to variable 'p114' with const-qualified type 'int *const'
-  p114 = rhs;
-  ~~~~ ^
-program_source:4:2654: note: variable 'p114' declared const here
-program_source:151:8: error: cannot assign to variable 'p115' with const-qualified type 'int *const'
-  p115 = rhs;
-  ~~~~ ^
-program_source:4:2678: note: variable 'p115' declared const here
-program_source:152:8: error: cannot assign to variable 'p116' with const-qualified type 'int *const'
-  p116 = rhs;
-  ~~~~ ^
-program_source:4:2702: note: variable 'p116' declared const here
-program_source:153:8: error: cannot assign to variable 'p117' with const-qualified type 'int *const'
-  p117 = rhs;
-  ~~~~ ^
-program_source:4:2726: note: variable 'p117' declared const here
-program_source:154:8: error: cannot assign to variable 'p118' with const-qualified type 'int *const'
-  p118 = rhs;
-  ~~~~ ^
-program_source:4:2750: note: variable 'p118' declared const here
-program_source:155:8: error: cannot assign to variable 'p119' with const-qualified type 'int *const'
-  p119 = rhs;
-  ~~~~ ^
-program_source:4:2774: note: variable 'p119' declared const here
-program_source:156:8: error: cannot assign to variable 'p120' with const-qualified type 'int *const'
-  p120 = rhs;
-  ~~~~ ^
-program_source:4:2798: note: variable 'p120' declared const here
-program_source:157:8: error: cannot assign to variable 'p121' with const-qualified type 'int *const'
-  p121 = rhs;
-  ~~~~ ^
-program_source:4:2822: note: variable 'p121' declared const here
-program_source:158:8: error: cannot assign to variable 'p122' with const-qualified type 'int *const'
-  p122 = rhs;
-  ~~~~ ^
-program_source:4:2846: note: variable 'p122' declared const here
-program_source:159:8: error: cannot assign to variable 'p123' with const-qualified type 'int *const'
-  p123 = rhs;
-  ~~~~ ^
-program_source:4:2870: note: variable 'p123' declared const here
-program_source:160:8: error: cannot assign to variable 'p124' with const-qualified type 'int *const'
-  p124 = rhs;
-  ~~~~ ^
-program_source:4:2894: note: variable 'p124' declared const here
-program_source:161:8: error: cannot assign to variable 'p125' with const-qualified type 'int *const'
-  p125 = rhs;
-  ~~~~ ^
-program_source:4:2918: note: variable 'p125' declared const here
-program_source:162:8: error: cannot assign to variable 'p126' with const-qualified type 'int *const'
-  p126 = rhs;
-  ~~~~ ^
-program_source:4:2942: note: variable 'p126' declared const here
-program_source:163:8: error: cannot assign to variable 'p127' with const-qualified type 'int *const'
-  p127 = rhs;
-  ~~~~ ^
-program_source:4:2966: note: variable 'p127' declared const here
-program_source:164:8: error: cannot assign to variable 'p128' with const-qualified type 'int *const'
-  p128 = rhs;
-  ~~~~ ^
-program_source:4:2990: note: variable 'p128' declared const here
-program_source:165:8: error: cannot assign to variable 'p129' with const-qualified type 'int *const'
-  p129 = rhs;
-  ~~~~ ^
-program_source:4:3014: note: variable 'p129' declared const here
-program_source:166:8: error: cannot assign to variable 'p130' with const-qualified type 'int *const'
-  p130 = rhs;
-  ~~~~ ^
-program_source:4:3038: note: variable 'p130' declared const here
-program_source:167:8: error: cannot assign to variable 'p131' with const-qualified type 'int *const'
-  p131 = rhs;
-  ~~~~ ^
-program_source:4:3062: note: variable 'p131' declared const here
-program_source:168:8: error: cannot assign to variable 'p132' with const-qualified type 'int *const'
-  p132 = rhs;
-  ~~~~ ^
-program_source:4:3086: note: variable 'p132' declared const here
-program_source:169:8: error: cannot assign to variable 'p133' with const-qualified type 'int *const'
-  p133 = rhs;
-  ~~~~ ^
-program_source:4:3110: note: variable 'p133' declared const here
-program_source:170:8: error: cannot assign to variable 'p134' with const-qualified type 'int *const'
-  p134 = rhs;
-  ~~~~ ^
-program_source:4:3134: note: variable 'p134' declared const here
-program_source:171:8: error: cannot assign to variable 'p135' with const-qualified type 'int *const'
-  p135 = rhs;
-  ~~~~ ^
-program_source:4:3158: note: variable 'p135' declared const here
-program_source:172:8: error: cannot assign to variable 'p136' with const-qualified type 'int *const'
-  p136 = rhs;
-  ~~~~ ^
-program_source:4:3182: note: variable 'p136' declared const here
-program_source:173:8: error: cannot assign to variable 'p137' with const-qualified type 'int *const'
-  p137 = rhs;
-  ~~~~ ^
-program_source:4:3206: note: variable 'p137' declared const here
-program_source:174:8: error: cannot assign to variable 'p138' with const-qualified type 'int *const'
-  p138 = rhs;
-  ~~~~ ^
-program_source:4:3230: note: variable 'p138' declared const here
-program_source:175:8: error: cannot assign to variable 'p139' with const-qualified type 'int *const'
-  p139 = rhs;
-  ~~~~ ^
-program_source:4:3254: note: variable 'p139' declared const here
-program_source:176:8: error: cannot assign to variable 'p140' with const-qualified type 'int *const'
-  p140 = rhs;
-  ~~~~ ^
-program_source:4:3278: note: variable 'p140' declared const here
-program_source:177:8: error: cannot assign to variable 'p141' with const-qualified type 'int *const'
-  p141 = rhs;
-  ~~~~ ^
-program_source:4:3302: note: variable 'p141' declared const here
-program_source:178:8: error: cannot assign to variable 'p142' with const-qualified type 'int *const'
-  p142 = rhs;
-  ~~~~ ^
-program_source:4:3326: note: variable 'p142' declared const here
-program_source:179:8: error: cannot assign to variable 'p143' with const-qualified type 'int *const'
-  p143 = rhs;
-  ~~~~ ^
-program_source:4:3350: note: variable 'p143' declared const here
-program_source:180:8: error: cannot assign to variable 'p144' with const-qualified type 'int *const'
-  p144 = rhs;
-  ~~~~ ^
-program_source:4:3374: note: variable 'p144' declared const here
-program_source:181:8: error: cannot assign to variable 'p145' with const-qualified type 'int *const'
-  p145 = rhs;
-  ~~~~ ^
-program_source:4:3398: note: variable 'p145' declared const here
-program_source:182:8: error: cannot assign to variable 'p146' with const-qualified type 'int *const'
-  p146 = rhs;
-  ~~~~ ^
-program_source:4:3422: note: variable 'p146' declared const here
-program_source:183:8: error: cannot assign to variable 'p147' with const-qualified type 'int *const'
-  p147 = rhs;
-  ~~~~ ^
-program_source:4:3446: note: variable 'p147' declared const here
-program_source:184:8: error: cannot assign to variable 'p148' with const-qualified type 'int *const'
-  p148 = rhs;
-  ~~~~ ^
-program_source:4:3470: note: variable 'p148' declared const here
-program_source:185:8: error: cannot assign to variable 'p149' with const-qualified type 'int *const'
-  p149 = rhs;
-  ~~~~ ^
-program_source:4:3494: note: variable 'p149' declared const here
-program_source:186:8: error: cannot assign to variable 'p150' with const-qualified type 'int *const'
-  p150 = rhs;
-  ~~~~ ^
-program_source:4:3518: note: variable 'p150' declared const here
-program_source:187:8: error: cannot assign to variable 'p151' with const-qualified type 'int *const'
-  p151 = rhs;
-  ~~~~ ^
-program_source:4:3542: note: variable 'p151' declared const here
-program_source:188:8: error: cannot assign to variable 'p152' with const-qualified type 'int *const'
-  p152 = rhs;
-  ~~~~ ^
-program_source:4:3566: note: variable 'p152' declared const here
-program_source:189:8: error: cannot assign to variable 'p153' with const-qualified type 'int *const'
-  p153 = rhs;
-  ~~~~ ^
-program_source:4:3590: note: variable 'p153' declared const here
-program_source:190:8: error: cannot assign to variable 'p154' with const-qualified type 'int *const'
-  p154 = rhs;
-  ~~~~ ^
-program_source:4:3614: note: variable 'p154' declared const here
-program_source:191:8: error: cannot assign to variable 'p155' with const-qualified type 'int *const'
-  p155 = rhs;
-  ~~~~ ^
-program_source:4:3638: note: variable 'p155' declared const here
-program_source:192:8: error: cannot assign to variable 'p156' with const-qualified type 'int *const'
-  p156 = rhs;
-  ~~~~ ^
-program_source:4:3662: note: variable 'p156' declared const here
-program_source:193:8: error: cannot assign to variable 'p157' with const-qualified type 'int *const'
-  p157 = rhs;
-  ~~~~ ^
-program_source:4:3686: note: variable 'p157' declared const here
-program_source:194:8: error: cannot assign to variable 'p158' with const-qualified type 'int *const'
-  p158 = rhs;
-  ~~~~ ^
-program_source:4:3710: note: variable 'p158' declared const here
-program_source:195:8: error: cannot assign to variable 'p159' with const-qualified type 'int *const'
-  p159 = rhs;
-  ~~~~ ^
-program_source:4:3734: note: variable 'p159' declared const here
-program_source:196:8: error: cannot assign to variable 'p160' with const-qualified type 'int *const'
-  p160 = rhs;
-  ~~~~ ^
-program_source:4:3758: note: variable 'p160' declared const here
-program_source:197:8: error: cannot assign to variable 'p161' with const-qualified type 'int *const'
-  p161 = rhs;
-  ~~~~ ^
-program_source:4:3782: note: variable 'p161' declared const here
-program_source:198:8: error: cannot assign to variable 'p162' with const-qualified type 'int *const'
-  p162 = rhs;
-  ~~~~ ^
-program_source:4:3806: note: variable 'p162' declared const here
-program_source:199:8: error: cannot assign to variable 'p163' with const-qualified type 'int *const'
-  p163 = rhs;
-  ~~~~ ^
-program_source:4:3830: note: variable 'p163' declared const here
-program_source:200:8: error: cannot assign to variable 'p164' with const-qualified type 'int *const'
-  p164 = rhs;
-  ~~~~ ^
-program_source:4:3854: note: variable 'p164' declared const here
-program_source:201:8: error: cannot assign to variable 'p165' with const-qualified type 'int *const'
-  p165 = rhs;
-  ~~~~ ^
-program_source:4:3878: note: variable 'p165' declared const here
-program_source:202:8: error: cannot assign to variable 'p166' with const-qualified type 'int *const'
-  p166 = rhs;
-  ~~~~ ^
-program_source:4:3902: note: variable 'p166' declared const here
-program_source:203:8: error: cannot assign to variable 'p167' with const-qualified type 'int *const'
-  p167 = rhs;
-  ~~~~ ^
-program_source:4:3926: note: variable 'p167' declared const here
-program_source:204:8: error: cannot assign to variable 'p168' with const-qualified type 'int *const'
-  p168 = rhs;
-  ~~~~ ^
-program_source:4:3950: note: variable 'p168' declared const here
-program_source:205:8: error: cannot assign to variable 'p169' with const-qualified type 'int *const'
-  p169 = rhs;
-  ~~~~ ^
-program_source:4:3974: note: variable 'p169' declared const here
-program_source:206:8: error: cannot assign to variable 'p170' with const-qualified type 'int *const'
-  p170 = rhs;
-  ~~~~ ^
-program_source:4:3998: note: variable 'p170' declared const here
-program_source:207:8: error: cannot assign to variable 'p171' with const-qualified type 'int *const'
-  p171 = rhs;
-  ~~~~ ^
-program_source:4:4022: note: variable 'p171' declared const here
-program_source:208:8: error: cannot assign to variable 'p172' with const-qualified type 'int *const'
-  p172 = rhs;
-  ~~~~ ^
-program_source:4:4046: note: variable 'p172' declared const here
-program_source:209:8: error: cannot assign to variable 'p173' with const-qualified type 'int *const'
-  p173 = rhs;
-  ~~~~ ^
-program_source:4:4070: note: variable 'p173' declared const here
-program_source:210:8: error: cannot assign to variable 'p174' with const-qualified type 'int *const'
-  p174 = rhs;
-  ~~~~ ^
-program_source:4:4094: note: variable 'p174' declared const here
-program_source:211:8: error: cannot assign to variable 'p175' with const-qualified type 'int *const'
-  p175 = rhs;
-  ~~~~ ^
-program_source:4:4118: note: variable 'p175' declared const here
-program_source:212:8: error: cannot assign to variable 'p176' with const-qualified type 'int *const'
-  p176 = rhs;
-  ~~~~ ^
-program_source:4:4142: note: variable 'p176' declared const here
-program_source:213:8: error: cannot assign to variable 'p177' with const-qualified type 'int *const'
-  p177 = rhs;
-  ~~~~ ^
-program_source:4:4166: note: variable 'p177' declared const here
-program_source:214:8: error: cannot assign to variable 'p178' with const-qualified type 'int *const'
-  p178 = rhs;
-  ~~~~ ^
-program_source:4:4190: note: variable 'p178' declared const here
-program_source:215:8: error: cannot assign to variable 'p179' with const-qualified type 'int *const'
-  p179 = rhs;
-  ~~~~ ^
-program_source:4:4214: note: variable 'p179' declared const here
-program_source:216:8: error: cannot assign to variable 'p180' with const-qualified type 'int *const'
-  p180 = rhs;
-  ~~~~ ^
-program_source:4:4238: note: variable 'p180' declared const here
-program_source:217:8: error: cannot assign to variable 'p181' with const-qualified type 'int *const'
-  p181 = rhs;
-  ~~~~ ^
-program_source:4:4262: note: variable 'p181' declared const here
-program_source:218:8: error: cannot assign to variable 'p182' with const-qualified type 'int *const'
-  p182 = rhs;
-  ~~~~ ^
-program_source:4:4286: note: variable 'p182' declared const here
-program_source:219:8: error: cannot assign to variable 'p183' with const-qualified type 'int *const'
-  p183 = rhs;
-  ~~~~ ^
-program_source:4:4310: note: variable 'p183' declared const here
-program_source:220:8: error: cannot assign to variable 'p184' with const-qualified type 'int *const'
-  p184 = rhs;
-  ~~~~ ^
-program_source:4:4334: note: variable 'p184' declared const here
-program_source:221:8: error: cannot assign to variable 'p185' with const-qualified type 'int *const'
-  p185 = rhs;
-  ~~~~ ^
-program_source:4:4358: note: variable 'p185' declared const here
-program_source:222:8: error: cannot assign to variable 'p186' with const-qualified type 'int *const'
-  p186 = rhs;
-  ~~~~ ^
-program_source:4:4382: note: variable 'p186' declared const here
-program_source:223:8: error: cannot assign to variable 'p187' with const-qualified type 'int *const'
-  p187 = rhs;
-  ~~~~ ^
-program_source:4:4406: note: variable 'p187' declared const here
-program_source:224:8: error: cannot assign to variable 'p188' with const-qualified type 'int *const'
-  p188 = rhs;
-  ~~~~ ^
-program_source:4:4430: note: variable 'p188' declared const here
-program_source:225:8: error: cannot assign to variable 'p189' with const-qualified type 'int *const'
-  p189 = rhs;
-  ~~~~ ^
-program_source:4:4454: note: variable 'p189' declared const here
-program_source:226:8: error: cannot assign to variable 'p190' with const-qualified type 'int *const'
-  p190 = rhs;
-  ~~~~ ^
-program_source:4:4478: note: variable 'p190' declared const here
-program_source:227:8: error: cannot assign to variable 'p191' with const-qualified type 'int *const'
-  p191 = rhs;
-  ~~~~ ^
-program_source:4:4502: note: variable 'p191' declared const here
-program_source:228:8: error: cannot assign to variable 'p192' with const-qualified type 'int *const'
-  p192 = rhs;
-  ~~~~ ^
-program_source:4:4526: note: variable 'p192' declared const here
-program_source:229:8: error: cannot assign to variable 'p193' with const-qualified type 'int *const'
-  p193 = rhs;
-  ~~~~ ^
-program_source:4:4550: note: variable 'p193' declared const here
-program_source:230:8: error: cannot assign to variable 'p194' with const-qualified type 'int *const'
-  p194 = rhs;
-  ~~~~ ^
-program_source:4:4574: note: variable 'p194' declared const here
-program_source:231:8: error: cannot assign to variable 'p195' with const-qualified type 'int *const'
-  p195 = rhs;
-  ~~~~ ^
-program_source:4:4598: note: variable 'p195' declared const here
-program_source:232:8: error: cannot assign to variable 'p196' with const-qualified type 'int *const'
-  p196 = rhs;
-  ~~~~ ^
-program_source:4:4622: note: variable 'p196' declared const here
-program_source:233:8: error: cannot assign to variable 'p197' with const-qualified type 'int *const'
-  p197 = rhs;
-  ~~~~ ^
-program_source:4:4646: note: variable 'p197' declared const here
-program_source:234:8: error: cannot assign to variable 'p198' with const-qualified type 'int *const'
-  p198 = rhs;
-  ~~~~ ^
-program_source:4:4670: note: variable 'p198' declared const here
-program_source:235:8: error: cannot assign to variable 'p199' with const-qualified type 'int *const'
-  p199 = rhs;
-  ~~~~ ^
-program_source:4:4694: note: variable 'p199' declared const here
-program_source:236:8: error: cannot assign to variable 'p200' with const-qualified type 'int *const'
-  p200 = rhs;
-  ~~~~ ^
-program_source:4:4718: note: variable 'p200' declared const here
-program_source:237:8: error: cannot assign to variable 'p201' with const-qualified type 'int *const'
-  p201 = rhs;
-  ~~~~ ^
-program_source:4:4742: note: variable 'p201' declared const here
-program_source:238:8: error: cannot assign to variable 'p202' with const-qualified type 'int *const'
-  p202 = rhs;
-  ~~~~ ^
-program_source:4:4766: note: variable 'p202' declared const here
-program_source:239:8: error: cannot assign to variable 'p203' with const-qualified type 'int *const'
-  p203 = rhs;
-  ~~~~ ^
-program_source:4:4790: note: variable 'p203' declared const here
-program_source:240:8: error: cannot assign to variable 'p204' with const-qualified type 'int *const'
-  p204 = rhs;
-  ~~~~ ^
-program_source:4:4814: note: variable 'p204' declared const here
-program_source:241:8: error: cannot assign to variable 'p205' with const-qualified type 'int *const'
-  p205 = rhs;
-  ~~~~ ^
-program_source:4:4838: note: variable 'p205' declared const here
-program_source:242:8: error: cannot assign to variable 'p206' with const-qualified type 'int *const'
-  p206 = rhs;
-  ~~~~ ^
-program_source:4:4862: note: variable 'p206' declared const here
-program_source:243:8: error: cannot assign to variable 'p207' with const-qualified type 'int *const'
-  p207 = rhs;
-  ~~~~ ^
-program_source:4:4886: note: variable 'p207' declared const here
-program_source:244:8: error: cannot assign to variable 'p208' with const-qualified type 'int *const'
-  p208 = rhs;
-  ~~~~ ^
-program_source:4:4910: note: variable 'p208' declared const here
-program_source:245:8: error: cannot assign to variable 'p209' with const-qualified type 'int *const'
-  p209 = rhs;
-  ~~~~ ^
-program_source:4:4934: note: variable 'p209' declared const here
-program_source:246:8: error: cannot assign to variable 'p210' with const-qualified type 'int *const'
-  p210 = rhs;
-  ~~~~ ^
-program_source:4:4958: note: variable 'p210' declared const here
-program_source:247:8: error: cannot assign to variable 'p211' with const-qualified type 'int *const'
-  p211 = rhs;
-  ~~~~ ^
-program_source:4:4982: note: variable 'p211' declared const here
-program_source:248:8: error: cannot assign to variable 'p212' with const-qualified type 'int *const'
-  p212 = rhs;
-  ~~~~ ^
-program_source:4:5006: note: variable 'p212' declared const here
-program_source:249:8: error: cannot assign to variable 'p213' with const-qualified type 'int *const'
-  p213 = rhs;
-  ~~~~ ^
-program_source:4:5030: note: variable 'p213' declared const here
-program_source:250:8: error: cannot assign to variable 'p214' with const-qualified type 'int *const'
-  p214 = rhs;
-  ~~~~ ^
-program_source:4:5054: note: variable 'p214' declared const here
-program_source:251:8: error: cannot assign to variable 'p215' with const-qualified type 'int *const'
-  p215 = rhs;
-  ~~~~ ^
-program_source:4:5078: note: variable 'p215' declared const here
-program_source:252:8: error: cannot assign to variable 'p216' with const-qualified type 'int *const'
-  p216 = rhs;
-  ~~~~ ^
-program_source:4:5102: note: variable 'p216' declared const here
-program_source:253:8: error: cannot assign to variable 'p217' with const-qualified type 'int *const'
-  p217 = rhs;
-  ~~~~ ^
-program_source:4:5126: note: variable 'p217' declared const here
-program_source:254:8: error: cannot assign to variable 'p218' with const-qualified type 'int *const'
-  p218 = rhs;
-  ~~~~ ^
-program_source:4:5150: note: variable 'p218' declared const here
-program_source:255:8: error: cannot assign to variable 'p219' with const-qualified type 'int *const'
-  p219 = rhs;
-  ~~~~ ^
-program_source:4:5174: note: variable 'p219' declared const here
-program_source:256:8: error: cannot assign to variable 'p220' with const-qualified type 'int *const'
-  p220 = rhs;
-  ~~~~ ^
-program_source:4:5198: note: variable 'p220' declared const here
-program_source:257:8: error: cannot assign to variable 'p221' with const-qualified type 'int *const'
-  p221 = rhs;
-  ~~~~ ^
-program_source:4:5222: note: variable 'p221' declared const here
-program_source:258:8: error: cannot assign to variable 'p222' with const-qualified type 'int *const'
-  p222 = rhs;
-  ~~~~ ^
-program_source:4:5246: note: variable 'p222' declared const here
-program_source:259:8: error: cannot assign to variable 'p223' with const-qualified type 'int *const'
-  p223 = rhs;
-  ~~~~ ^
-program_source:4:5270: note: variable 'p223' declared const here
-program_source:260:8: error: cannot assign to variable 'p224' with const-qualified type 'int *const'
-  p224 = rhs;
-  ~~~~ ^
-program_source:4:5294: note: variable 'p224' declared const here
-program_source:261:8: error: cannot assign to variable 'p225' with const-qualified type 'int *const'
-  p225 = rhs;
-  ~~~~ ^
-program_source:4:5318: note: variable 'p225' declared const here
-program_source:262:8: error: cannot assign to variable 'p226' with const-qualified type 'int *const'
-  p226 = rhs;
-  ~~~~ ^
-program_source:4:5342: note: variable 'p226' declared const here
-program_source:263:8: error: cannot assign to variable 'p227' with const-qualified type 'int *const'
-  p227 = rhs;
-  ~~~~ ^
-program_source:4:5366: note: variable 'p227' declared const here
-program_source:264:8: error: cannot assign to variable 'p228' with const-qualified type 'int *const'
-  p228 = rhs;
-  ~~~~ ^
-program_source:4:5390: note: variable 'p228' declared const here
-program_source:265:8: error: cannot assign to variable 'p229' with const-qualified type 'int *const'
-  p229 = rhs;
-  ~~~~ ^
-program_source:4:5414: note: variable 'p229' declared const here
-program_source:266:8: error: cannot assign to variable 'p230' with const-qualified type 'int *const'
-  p230 = rhs;
-  ~~~~ ^
-program_source:4:5438: note: variable 'p230' declared const here
-program_source:267:8: error: cannot assign to variable 'p231' with const-qualified type 'int *const'
-  p231 = rhs;
-  ~~~~ ^
-program_source:4:5462: note: variable 'p231' declared const here
-program_source:268:8: error: cannot assign to variable 'p232' with const-qualified type 'int *const'
-  p232 = rhs;
-  ~~~~ ^
-program_source:4:5486: note: variable 'p232' declared const here
-program_source:269:8: error: cannot assign to variable 'p233' with const-qualified type 'int *const'
-  p233 = rhs;
-  ~~~~ ^
-program_source:4:5510: note: variable 'p233' declared const here
-program_source:270:8: error: cannot assign to variable 'p234' with const-qualified type 'int *const'
-  p234 = rhs;
-  ~~~~ ^
-program_source:4:5534: note: variable 'p234' declared const here
-program_source:271:8: error: cannot assign to variable 'p235' with const-qualified type 'int *const'
-  p235 = rhs;
-  ~~~~ ^
-program_source:4:5558: note: variable 'p235' declared const here
-program_source:272:8: error: cannot assign to variable 'p236' with const-qualified type 'int *const'
-  p236 = rhs;
-  ~~~~ ^
-program_source:4:5582: note: variable 'p236' declared const here
-program_source:273:8: error: cannot assign to variable 'p237' with const-qualified type 'int *const'
-  p237 = rhs;
-  ~~~~ ^
-program_source:4:5606: note: variable 'p237' declared const here
-program_source:274:8: error: cannot assign to variable 'p238' with const-qualified type 'int *const'
-  p238 = rhs;
-  ~~~~ ^
-program_source:4:5630: note: variable 'p238' declared const here
-program_source:275:8: error: cannot assign to variable 'p239' with const-qualified type 'int *const'
-  p239 = rhs;
-  ~~~~ ^
-program_source:4:5654: note: variable 'p239' declared const here
-program_source:276:8: error: cannot assign to variable 'p240' with const-qualified type 'int *const'
-  p240 = rhs;
-  ~~~~ ^
-program_source:4:5678: note: variable 'p240' declared const here
-program_source:277:8: error: cannot assign to variable 'p241' with const-qualified type 'int *const'
-  p241 = rhs;
-  ~~~~ ^
-program_source:4:5702: note: variable 'p241' declared const here
-program_source:278:8: error: cannot assign to variable 'p242' with const-qualified type 'int *const'
-  p242 = rhs;
-  ~~~~ ^
-program_source:4:5726: note: variable 'p242' declared const here
-program_source:279:8: error: cannot assign to variable 'p243' with const-qualified type 'int *const'
-  p243 = rhs;
-  ~~~~ ^
-program_source:4:5750: note: variable 'p243' declared const here
-program_source:280:8: error: cannot assign to variable 'p244' with const-qualified type 'int *const'
-  p244 = rhs;
-  ~~~~ ^
-program_source:4:5774: note: variable 'p244' declared const here
-program_source:281:8: error: cannot assign to variable 'p245' with const-qualified type 'int *const'
-  p245 = rhs;
-  ~~~~ ^
-program_source:4:5798: note: variable 'p245' declared const here
-program_source:282:8: error: cannot assign to variable 'p246' with const-qualified type 'int *const'
-  p246 = rhs;
-  ~~~~ ^
-program_source:4:5822: note: variable 'p246' declared const here
-program_source:283:8: error: cannot assign to variable 'p247' with const-qualified type 'int *const'
-  p247 = rhs;
-  ~~~~ ^
-program_source:4:5846: note: variable 'p247' declared const here
-program_source:284:8: error: cannot assign to variable 'p248' with const-qualified type 'int *const'
-  p248 = rhs;
-  ~~~~ ^
-program_source:4:5870: note: variable 'p248' declared const here
-program_source:285:8: error: cannot assign to variable 'p249' with const-qualified type 'int *const'
-  p249 = rhs;
-  ~~~~ ^
-program_source:4:5894: note: variable 'p249' declared const here
-program_source:286:8: error: cannot assign to variable 'p250' with const-qualified type 'int *const'
-  p250 = rhs;
-  ~~~~ ^
-program_source:4:5918: note: variable 'p250' declared const here
-program_source:287:8: error: cannot assign to variable 'p251' with const-qualified type 'int *const'
-  p251 = rhs;
-  ~~~~ ^
-program_source:4:5942: note: variable 'p251' declared const here
-program_source:288:8: error: cannot assign to variable 'p252' with const-qualified type 'int *const'
-  p252 = rhs;
-  ~~~~ ^
-program_source:4:5966: note: variable 'p252' declared const here
-program_source:289:8: error: cannot assign to variable 'p253' with const-qualified type 'int *const'
-  p253 = rhs;
-  ~~~~ ^
-program_source:4:5990: note: variable 'p253' declared const here
-program_source:290:8: error: cannot assign to variable 'p254' with const-qualified type 'int *const'
-  p254 = rhs;
-  ~~~~ ^
-program_source:4:6014: note: variable 'p254' declared const here
-program_source:548:3: error: no matching function for call to 'foo'
-  foo(v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63, v64, v65, v66, v67, v68, v69, v70, v71, v72, v73, v74, v75, v76, v77, v78, v79, v80, v81, v82, v83, v84, v85, v86, v87, v88, v89, v90, v91, v92, v93, v94, v95, v96, v97, v98, v99, v100, v101, v102, v103, v104, v105, v106, v107, v108, v109, v110, v111, v112, v113, v114, v115, v116, v117, v118, v119, v120, v121, v122, v123, v124, v125, v126, v127, v128, v129, v130, v131, v132, v133, v134, v135, v136, v137, v138, v139, v140, v141, v142, v143, v144, v145, v146, v147, v148, v149, v150, v151, v152, v153, v154, v155, v156, v157, v158, v159, v160, v161, v162, v163, v164, v165, v166, v167, v168, v169, v170, v171, v172, v173, v174, v175, v176, v177, v178, v179, v180, v181, v182, v183, v184, v185, v186, v187, v188, v189, v190, v191, v192, v193, v194, v195, v196, v197, v198, v199, v200, v201, v202, v203, v204, v205, v206, v207, v208, v209, v210, v211, v212, v213, v214, v215, v216, v217, v218, v219, v220, v221, v222, v223, v224, v225, v226, v227, v228, v229, v230, v231, v232, v233, v234, v235, v236, v237, v238, v239, v240, v241, v242, v243, v244, v245, v246, v247, v248, v249, v250, v251, v252, v253, v254);
-  ^~~
-program_source:4:6: note: candidate function not viable: no known conversion from 'int' to 'int *const' for 1st argument; take the address of the argument with &
-program_source:549:13: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
-  if ((v254 == 0)) {
-       ~~~~~^~~~
-program_source:549:13: note: remove extraneous parentheses around the comparison to silence this warning
-  if ((v254 == 0)) {
-      ~     ^   ~
-program_source:549:13: note: use '=' to turn this equality comparison into an assignment
-  if ((v254 == 0)) {
-            ^~
-            =
-
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
index 5efff12..6ba9099 100644
--- a/test/tint/buffer/storage/types/array4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/array4_f16.wgsl.expected.ir.msl
@@ -1,22 +1,23 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+struct tint_module_vars_struct {
+  const device tint_array<half, 4>* in;
+  device tint_array<half, 4>* out;
+};
+
+kernel void tint_symbol(const device tint_array<half, 4>* in [[buffer(0)]], device tint_array<half, 4>* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 8e51e1b..707a37b 100644
--- a/test/tint/buffer/storage/types/array4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/array4_f32.wgsl.expected.ir.msl
@@ -1,22 +1,23 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+struct tint_module_vars_struct {
+  const device tint_array<float, 4>* in;
+  device tint_array<float, 4>* out;
+};
+
+kernel void tint_symbol(const device tint_array<float, 4>* in [[buffer(0)]], device tint_array<float, 4>* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 8a3ce30..7b4b10b 100644
--- a/test/tint/buffer/storage/types/f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/f16.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device half* in;
+  device half* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, f16, read> = var @binding_point(0, 0)
-  %out:ptr<storage, f16, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device half* in [[buffer(0)]], device half* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index c6d9e30..47b2078 100644
--- a/test/tint/buffer/storage/types/f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/f32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float* in;
+  device float* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, f32, read> = var @binding_point(0, 0)
-  %out:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device float* in [[buffer(0)]], device float* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index a84dbf6..edc0ef0 100644
--- a/test/tint/buffer/storage/types/i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/i32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device int* in;
+  device int* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, i32, read> = var @binding_point(0, 0)
-  %out:ptr<storage, i32, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device int* in [[buffer(0)]], device int* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 189b8ce..824b701 100644
--- a/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat2x2_f16.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device half2x2* in;
+  device half2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat2x2<f16>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device half2x2* in [[buffer(0)]], device half2x2* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 17acaf1..e0724a7 100644
--- a/test/tint/buffer/storage/types/mat2x2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat2x2_f32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float2x2* in;
+  device float2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat2x2<f32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device float2x2* in [[buffer(0)]], device float2x2* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index fe91e6c..412ece7 100644
--- a/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat2x3_f16.wgsl.expected.ir.msl
@@ -1,33 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device half2x3* in;
+  device half2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat2x3<f16>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device half2x3* const target, half2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f16> = load %in
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void tint_symbol(const device half2x3* in [[buffer(0)]], device half2x3* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.in));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f16>, read_write>, %value_param:mat2x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    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/buffer/storage/types/mat2x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x3_f32.wgsl.expected.ir.msl
index 4423fbe..456f0fd 100644
--- a/test/tint/buffer/storage/types/mat2x3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat2x3_f32.wgsl.expected.ir.msl
@@ -1,33 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float2x3* in;
+  device float2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat2x3<f32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f32> = load %in
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void tint_symbol(const device float2x3* in [[buffer(0)]], device float2x3* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.in));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    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/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.msl
index 07a73c5..6a84e3e 100644
--- a/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat2x4_f16.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device half2x4* in;
+  device half2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat2x4<f16>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device half2x4* in [[buffer(0)]], device half2x4* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 6e3cc0f..34f93d0 100644
--- a/test/tint/buffer/storage/types/mat2x4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat2x4_f32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float2x4* in;
+  device float2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat2x4<f32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device float2x4* in [[buffer(0)]], device float2x4* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index b906b25..19c106b 100644
--- a/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat3x2_f16.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device half3x2* in;
+  device half3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat3x2<f16>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device half3x2* in [[buffer(0)]], device half3x2* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 8522e4f..85f9043 100644
--- a/test/tint/buffer/storage/types/mat3x2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat3x2_f32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float3x2* in;
+  device float3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat3x2<f32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device float3x2* in [[buffer(0)]], device float3x2* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 73c8213..98f4a8f 100644
--- a/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat3x3_f16.wgsl.expected.ir.msl
@@ -1,36 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device half3x3* in;
+  device half3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat3x3<f16>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device half3x3* const target, half3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f16> = load %in
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void tint_symbol(const device half3x3* in [[buffer(0)]], device half3x3* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.in));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f16>, read_write>, %value_param:mat3x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %14:vec3<f16> = access %value_param, 2u
-    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/buffer/storage/types/mat3x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x3_f32.wgsl.expected.ir.msl
index ce6f52f..b3e18bc 100644
--- a/test/tint/buffer/storage/types/mat3x3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat3x3_f32.wgsl.expected.ir.msl
@@ -1,36 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float3x3* in;
+  device float3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat3x3<f32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f32> = load %in
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void tint_symbol(const device float3x3* in [[buffer(0)]], device float3x3* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.in));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f32>, read_write>, %value_param:mat3x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %14:vec3<f32> = access %value_param, 2u
-    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/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.msl
index f030f51..0a096bd 100644
--- a/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat3x4_f16.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device half3x4* in;
+  device half3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat3x4<f16>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device half3x4* in [[buffer(0)]], device half3x4* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 235bd7a..05d12e3 100644
--- a/test/tint/buffer/storage/types/mat3x4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat3x4_f32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float3x4* in;
+  device float3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat3x4<f32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device float3x4* in [[buffer(0)]], device float3x4* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index c8bacd4..dbefc25 100644
--- a/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat4x2_f16.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device half4x2* in;
+  device half4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat4x2<f16>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device half4x2* in [[buffer(0)]], device half4x2* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 9b4d556..b756c9e 100644
--- a/test/tint/buffer/storage/types/mat4x2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat4x2_f32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float4x2* in;
+  device float4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat4x2<f32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device float4x2* in [[buffer(0)]], device float4x2* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 2680261..231d79a 100644
--- a/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat4x3_f16.wgsl.expected.ir.msl
@@ -1,39 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device half4x3* in;
+  device half4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat4x3<f16>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device half4x3* const target, half4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f16> = load %in
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void tint_symbol(const device half4x3* in [[buffer(0)]], device half4x3* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.in));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f16>, read_write>, %value_param:mat4x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %14:vec3<f16> = access %value_param, 2u
-    store %13, %14
-    %15:ptr<storage, vec3<f16>, read_write> = access %target, 3u
-    %16:vec3<f16> = access %value_param, 3u
-    store %15, %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/buffer/storage/types/mat4x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x3_f32.wgsl.expected.ir.msl
index f360275..b048da1 100644
--- a/test/tint/buffer/storage/types/mat4x3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat4x3_f32.wgsl.expected.ir.msl
@@ -1,39 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float4x3* in;
+  device float4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat4x3<f32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f32> = load %in
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void tint_symbol(const device float4x3* in [[buffer(0)]], device float4x3* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.in));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f32>, read_write>, %value_param:mat4x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %14:vec3<f32> = access %value_param, 2u
-    store %13, %14
-    %15:ptr<storage, vec3<f32>, read_write> = access %target, 3u
-    %16:vec3<f32> = access %value_param, 3u
-    store %15, %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/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.msl
index b1f7375..c513d85 100644
--- a/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat4x4_f16.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device half4x4* in;
+  device half4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat4x4<f16>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device half4x4* in [[buffer(0)]], device half4x4* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index e5c26b0..c916802 100644
--- a/test/tint/buffer/storage/types/mat4x4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/mat4x4_f32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float4x4* in;
+  device float4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, mat4x4<f32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device float4x4* in [[buffer(0)]], device float4x4* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 8cca224..1e62fb1 100644
--- 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
@@ -19,5 +19,5 @@
 
 kernel void tint_symbol(const device tint_array<half, 1>* in [[buffer(0)]], device tint_array<half, 1>* out [[buffer(1)]]) {
   tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
-  tint_module_vars.out[0] = tint_module_vars.in[0];
+  (*tint_module_vars.out)[0] = (*tint_module_vars.in)[0];
 }
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
index d148d72..854ef60 100644
--- 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
@@ -19,5 +19,5 @@
 
 kernel void tint_symbol(const device tint_array<float, 1>* in [[buffer(0)]], device tint_array<float, 1>* out [[buffer(1)]]) {
   tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
-  tint_module_vars.out[0] = tint_module_vars.in[0];
+  (*tint_module_vars.out)[0] = (*tint_module_vars.in)[0];
 }
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
index b43ae16..c164eb7 100644
--- a/test/tint/buffer/storage/types/struct_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/struct_f16.wgsl.expected.ir.msl
@@ -1,55 +1,28 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct Inner {
+  half scalar_f16;
+  half3 vec3_f16;
+  half2x4 mat2x4_f16;
+};
+struct S {
+  Inner inner;
+};
+struct tint_module_vars_struct {
+  const device S* in;
+  device S* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  scalar_f16:f16 @offset(0)
-  vec3_f16:vec3<f16> @offset(8)
-  mat2x4_f16:mat2x4<f16> @offset(16)
+void tint_store_and_preserve_padding(device Inner* const target, Inner value_param) {
+  (*target).scalar_f16 = value_param.scalar_f16;
+  (*target).vec3_f16 = value_param.vec3_f16;
+  (*target).mat2x4_f16 = value_param.mat2x4_f16;
 }
-
-S = struct @align(8) {
-  inner:Inner @offset(0)
+void tint_store_and_preserve_padding(device S* const target, S value_param) {
+  tint_store_and_preserve_padding((&(*target).inner), value_param.inner);
 }
-
-$B1: {  # root
-  %in:ptr<storage, S, read> = var @binding_point(0, 0)
-  %out:ptr<storage, S, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device S* in [[buffer(0)]], device S* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  S const t = (*tint_module_vars.in);
+  tint_store_and_preserve_padding(tint_module_vars.out, t);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:S = load %in
-    %t:S = let %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %t
-    ret
-  }
-}
-%tint_store_and_preserve_padding = func(%target:ptr<storage, S, read_write>, %value_param:S):void {
-  $B3: {
-    %10:ptr<storage, Inner, read_write> = access %target, 0u
-    %11:Inner = access %value_param, 0u
-    %12:void = call %tint_store_and_preserve_padding_1, %10, %11
-    ret
-  }
-}
-%tint_store_and_preserve_padding_1 = func(%target_1:ptr<storage, Inner, read_write>, %value_param_1:Inner):void {  # %tint_store_and_preserve_padding_1: 'tint_store_and_preserve_padding', %target_1: 'target', %value_param_1: 'value_param'
-  $B4: {
-    %16:ptr<storage, f16, read_write> = access %target_1, 0u
-    %17:f16 = access %value_param_1, 0u
-    store %16, %17
-    %18:ptr<storage, vec3<f16>, read_write> = access %target_1, 1u
-    %19:vec3<f16> = access %value_param_1, 1u
-    store %18, %19
-    %20:ptr<storage, mat2x4<f16>, read_write> = access %target_1, 2u
-    %21:mat2x4<f16> = access %value_param_1, 2u
-    store %20, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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
index d07af79..63beebd 100644
--- a/test/tint/buffer/storage/types/struct_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/struct_f32.wgsl.expected.ir.msl
@@ -1,55 +1,28 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct Inner {
+  float scalar_f32;
+  float3 vec3_f32;
+  float2x4 mat2x4_f32;
+};
+struct S {
+  Inner inner;
+};
+struct tint_module_vars_struct {
+  const device S* in;
+  device S* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  scalar_f32:f32 @offset(0)
-  vec3_f32:vec3<f32> @offset(16)
-  mat2x4_f32:mat2x4<f32> @offset(32)
+void tint_store_and_preserve_padding(device Inner* const target, Inner value_param) {
+  (*target).scalar_f32 = value_param.scalar_f32;
+  (*target).vec3_f32 = value_param.vec3_f32;
+  (*target).mat2x4_f32 = value_param.mat2x4_f32;
 }
-
-S = struct @align(16) {
-  inner:Inner @offset(0)
+void tint_store_and_preserve_padding(device S* const target, S value_param) {
+  tint_store_and_preserve_padding((&(*target).inner), value_param.inner);
 }
-
-$B1: {  # root
-  %in:ptr<storage, S, read> = var @binding_point(0, 0)
-  %out:ptr<storage, S, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device S* in [[buffer(0)]], device S* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  S const t = (*tint_module_vars.in);
+  tint_store_and_preserve_padding(tint_module_vars.out, t);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:S = load %in
-    %t:S = let %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %t
-    ret
-  }
-}
-%tint_store_and_preserve_padding = func(%target:ptr<storage, S, read_write>, %value_param:S):void {
-  $B3: {
-    %10:ptr<storage, Inner, read_write> = access %target, 0u
-    %11:Inner = access %value_param, 0u
-    %12:void = call %tint_store_and_preserve_padding_1, %10, %11
-    ret
-  }
-}
-%tint_store_and_preserve_padding_1 = func(%target_1:ptr<storage, Inner, read_write>, %value_param_1:Inner):void {  # %tint_store_and_preserve_padding_1: 'tint_store_and_preserve_padding', %target_1: 'target', %value_param_1: 'value_param'
-  $B4: {
-    %16:ptr<storage, f32, read_write> = access %target_1, 0u
-    %17:f32 = access %value_param_1, 0u
-    store %16, %17
-    %18:ptr<storage, vec3<f32>, read_write> = access %target_1, 1u
-    %19:vec3<f32> = access %value_param_1, 1u
-    store %18, %19
-    %20:ptr<storage, mat2x4<f32>, read_write> = access %target_1, 2u
-    %21:mat2x4<f32> = access %value_param_1, 2u
-    store %20, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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
index 47e58b1..722f79b 100644
--- a/test/tint/buffer/storage/types/u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/u32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device uint* in;
+  device uint* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, u32, read> = var @binding_point(0, 0)
-  %out:ptr<storage, u32, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device uint* in [[buffer(0)]], device uint* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 7d1f789..7cd3047 100644
--- a/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec2_f16.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device half2* in;
+  device half2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, vec2<f16>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, vec2<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device half2* in [[buffer(0)]], device half2* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 07039b0..9dc1b65 100644
--- a/test/tint/buffer/storage/types/vec2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec2_f32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float2* in;
+  device float2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, vec2<f32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, vec2<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device float2* in [[buffer(0)]], device float2* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 90f8a42..d9ac05a2 100644
--- a/test/tint/buffer/storage/types/vec2_i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec2_i32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device int2* in;
+  device int2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, vec2<i32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, vec2<i32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device int2* in [[buffer(0)]], device int2* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 7f8436e..da42370 100644
--- a/test/tint/buffer/storage/types/vec2_u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec2_u32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device uint2* in;
+  device uint2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, vec2<u32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, vec2<u32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device uint2* in [[buffer(0)]], device uint2* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index d886d54..b701bb1 100644
--- a/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec3_f16.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device half3* in;
+  device half3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, vec3<f16>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, vec3<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device half3* in [[buffer(0)]], device half3* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 6bf97d3..a4c8d83 100644
--- a/test/tint/buffer/storage/types/vec3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec3_f32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float3* in;
+  device float3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, vec3<f32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, vec3<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device float3* in [[buffer(0)]], device float3* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index d6fdc96..ecd09c8 100644
--- a/test/tint/buffer/storage/types/vec3_i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec3_i32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device int3* in;
+  device int3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, vec3<i32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, vec3<i32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device int3* in [[buffer(0)]], device int3* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 3643214..ed24883 100644
--- a/test/tint/buffer/storage/types/vec3_u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec3_u32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device uint3* in;
+  device uint3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, vec3<u32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, vec3<u32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device uint3* in [[buffer(0)]], device uint3* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 0b4e74c..819de0d 100644
--- a/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec4_f16.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device half4* in;
+  device half4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, vec4<f16>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, vec4<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device half4* in [[buffer(0)]], device half4* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 74fc62e..b5010a2 100644
--- a/test/tint/buffer/storage/types/vec4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec4_f32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float4* in;
+  device float4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, vec4<f32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, vec4<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device float4* in [[buffer(0)]], device float4* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index ac7b0e2..ad78b22 100644
--- a/test/tint/buffer/storage/types/vec4_i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec4_i32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device int4* in;
+  device int4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, vec4<i32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, vec4<i32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device int4* in [[buffer(0)]], device int4* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 52ee996..e2459ca 100644
--- a/test/tint/buffer/storage/types/vec4_u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/storage/types/vec4_u32.wgsl.expected.ir.msl
@@ -1,22 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device uint4* in;
+  device uint4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %in:ptr<storage, vec4<u32>, read> = var @binding_point(0, 0)
-  %out:ptr<storage, vec4<u32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const device uint4* in [[buffer(0)]], device uint4* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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/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
index 5c5e7bf..79e7291 100644
--- 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
@@ -1,51 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat2x2<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %counter:ptr<private, i32, read_write> = var, 0i
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float2x2, 4>* a;
+  device float* s;
+  thread int* counter;
+};
 
-%i = func():i32 {
-  $B2: {
-    %5:i32 = load %counter
-    %6:i32 = add %5, 1i
-    store %counter, %6
-    %7:i32 = load %counter
-    ret %7
-  }
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_a:ptr<uniform, array<mat2x2<f32>, 4>, read> = let %a
-    %10:i32 = call %i
-    %11:ptr<uniform, mat2x2<f32>, read> = access %p_a, %10
-    %p_a_i:ptr<uniform, mat2x2<f32>, read> = let %11
-    %13:i32 = call %i
-    %14:ptr<uniform, vec2<f32>, read> = access %p_a_i, %13
-    %p_a_i_i:ptr<uniform, vec2<f32>, read> = let %14
-    %16:array<mat2x2<f32>, 4> = load %p_a
-    %l_a:array<mat2x2<f32>, 4> = let %16
-    %18:mat2x2<f32> = load %p_a_i
-    %l_a_i:mat2x2<f32> = let %18
-    %20:vec2<f32> = load %p_a_i_i
-    %l_a_i_i:vec2<f32> = let %20
-    %22:f32 = load_vector_element %p_a_i_i, 0u
-    %23:f32 = access %l_a, 0i, 0i, 0u
-    %24:f32 = add %22, %23
-    %25:f32 = access %l_a_i, 0i, 0u
-    %26:f32 = add %24, %25
-    %27:f32 = access %l_a_i_i, 0u
-    %28:f32 = add %26, %27
-    store %s, %28
-    ret
-  }
+kernel void f(const constant tint_array<float2x2, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  const constant tint_array<float2x2, 4>* const p_a = tint_module_vars.a;
+  const constant float2x2* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant float2* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
+  tint_array<float2x2, 4> const l_a = (*p_a);
+  float2x2 const l_a_i = (*p_a_i);
+  float2 const l_a_i_i = (*p_a_i_i);
+  (*tint_module_vars.s) = ((((*p_a_i_i)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 64ecc68..c5b8b2b 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat2x2<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+struct tint_module_vars_struct {
+  const constant tint_array<float2x2, 4>* a;
+  device float* s;
+};
+
+kernel void f(const constant tint_array<float2x2, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  const constant tint_array<float2x2, 4>* const p_a = tint_module_vars.a;
+  const constant float2x2* const p_a_2 = (&(*p_a)[2]);
+  const constant float2* const p_a_2_1 = (&(*p_a_2)[1]);
+  tint_array<float2x2, 4> const l_a = (*p_a);
+  float2x2 const l_a_i = (*p_a_2);
+  float2 const l_a_i_i = (*p_a_2_1);
+  (*tint_module_vars.s) = ((((*p_a_2_1)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<mat2x2<f32>, 4>, read> = let %a
-    %5:ptr<uniform, mat2x2<f32>, read> = access %p_a, 2i
-    %p_a_2:ptr<uniform, mat2x2<f32>, read> = let %5
-    %7:ptr<uniform, vec2<f32>, read> = access %p_a_2, 1i
-    %p_a_2_1:ptr<uniform, vec2<f32>, read> = let %7
-    %9:array<mat2x2<f32>, 4> = load %p_a
-    %l_a:array<mat2x2<f32>, 4> = let %9
-    %11:mat2x2<f32> = load %p_a_2
-    %l_a_i:mat2x2<f32> = let %11
-    %13:vec2<f32> = load %p_a_2_1
-    %l_a_i_i:vec2<f32> = let %13
-    %15:f32 = load_vector_element %p_a_2_1, 0u
-    %16:f32 = access %l_a, 0i, 0i, 0u
-    %17:f32 = add %15, %16
-    %18:f32 = access %l_a_i, 0i, 0u
-    %19:f32 = add %17, %18
-    %20:f32 = access %l_a_i_i, 0u
-    %21:f32 = add %19, %20
-    store %s, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 6d05dd4..67e2c70 100644
--- 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
@@ -1,64 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat2x2<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float2x2, 4>* u;
+  device float* s;
+};
 
-%a = func(%a_1:array<mat2x2<f32>, 4>):f32 {  # %a_1: 'a'
-  $B2: {
-    %5:f32 = access %a_1, 0i, 0i, 0u
-    ret %5
-  }
+float a(tint_array<float2x2, 4> a) {
+  return a[0][0][0u];
 }
-%b = func(%m:mat2x2<f32>):f32 {
-  $B3: {
-    %8:f32 = access %m, 0i, 0u
-    ret %8
-  }
+float b(float2x2 m) {
+  return m[0][0u];
 }
-%c = func(%v:vec2<f32>):f32 {
-  $B4: {
-    %11:f32 = access %v, 0u
-    ret %11
-  }
+float c(float2 v) {
+  return v[0u];
 }
-%d = func(%f:f32):f32 {
-  $B5: {
-    ret %f
-  }
+float d(float f) {
+  return f;
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B6: {
-    %15:array<mat2x2<f32>, 4> = load %u
-    %16:f32 = call %a, %15
-    %17:f32 = let %16
-    %18:ptr<uniform, mat2x2<f32>, read> = access %u, 1i
-    %19:mat2x2<f32> = load %18
-    %20:f32 = call %b, %19
-    %21:f32 = add %17, %20
-    %22:f32 = let %21
-    %23:ptr<uniform, vec2<f32>, read> = access %u, 1i, 0i
-    %24:vec2<f32> = load %23
-    %25:vec2<f32> = swizzle %24, yx
-    %26:f32 = call %c, %25
-    %27:f32 = add %22, %26
-    %28:f32 = let %27
-    %29:ptr<uniform, vec2<f32>, read> = access %u, 1i, 0i
-    %30:vec2<f32> = load %29
-    %31:vec2<f32> = swizzle %30, yx
-    %32:f32 = access %31, 0u
-    %33:f32 = call %d, %32
-    %34:f32 = add %28, %33
-    store %s, %34
-    ret
-  }
+kernel void f(const constant tint_array<float2x2, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float const v_1 = a((*tint_module_vars.u));
+  float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
+  float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].yx));
+  (*tint_module_vars.s) = (v_3 + d((*tint_module_vars.u)[1][0].yx[0u]));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index abfedb8..8bfe23f 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat2x2<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %p:ptr<private, array<mat2x2<f32>, 4>, read_write> = var
+struct tint_module_vars_struct {
+  const constant tint_array<float2x2, 4>* u;
+  device float* s;
+  thread tint_array<float2x2, 4>* p;
+};
+
+kernel void f(const constant tint_array<float2x2, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread tint_array<float2x2, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].yx;
+  (*tint_module_vars.p)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
+  (*tint_module_vars.s) = (*tint_module_vars.p)[1][0][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:array<mat2x2<f32>, 4> = load %u
-    store %p, %5
-    %6:ptr<private, mat2x2<f32>, read_write> = access %p, 1i
-    %7:ptr<uniform, mat2x2<f32>, read> = access %u, 2i
-    %8:mat2x2<f32> = load %7
-    store %6, %8
-    %9:ptr<private, vec2<f32>, read_write> = access %p, 1i, 0i
-    %10:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
-    %11:vec2<f32> = load %10
-    %12:vec2<f32> = swizzle %11, yx
-    store %9, %12
-    %13:ptr<private, vec2<f32>, read_write> = access %p, 1i, 0i
-    %14:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
-    %15:f32 = load_vector_element %14, 0u
-    store_vector_element %13, 0u, %15
-    %16:ptr<private, vec2<f32>, read_write> = access %p, 1i, 0i
-    %17:f32 = load_vector_element %16, 0u
-    store %s, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 2d3c36d..72effba 100644
--- 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
@@ -1,35 +1,26 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+struct tint_module_vars_struct {
+  const constant tint_array<float2x2, 4>* u;
+  device tint_array<float2x2, 4>* s;
+};
+
+kernel void f(const constant tint_array<float2x2, 4>* u [[buffer(0)]], device tint_array<float2x2, 4>* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].yx;
+  (*tint_module_vars.s)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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/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
index b28cff4..aa5a4f7 100644
--- 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
@@ -1,51 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat2x3<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-  %counter:ptr<private, i32, read_write> = var, 0i
-}
+struct tint_module_vars_struct {
+  const constant tint_array<half2x3, 4>* a;
+  device half* s;
+  thread int* counter;
+};
 
-%i = func():i32 {
-  $B2: {
-    %5:i32 = load %counter
-    %6:i32 = add %5, 1i
-    store %counter, %6
-    %7:i32 = load %counter
-    ret %7
-  }
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_a:ptr<uniform, array<mat2x3<f16>, 4>, read> = let %a
-    %10:i32 = call %i
-    %11:ptr<uniform, mat2x3<f16>, read> = access %p_a, %10
-    %p_a_i:ptr<uniform, mat2x3<f16>, read> = let %11
-    %13:i32 = call %i
-    %14:ptr<uniform, vec3<f16>, read> = access %p_a_i, %13
-    %p_a_i_i:ptr<uniform, vec3<f16>, read> = let %14
-    %16:array<mat2x3<f16>, 4> = load %p_a
-    %l_a:array<mat2x3<f16>, 4> = let %16
-    %18:mat2x3<f16> = load %p_a_i
-    %l_a_i:mat2x3<f16> = let %18
-    %20:vec3<f16> = load %p_a_i_i
-    %l_a_i_i:vec3<f16> = let %20
-    %22:f16 = load_vector_element %p_a_i_i, 0u
-    %23:f16 = access %l_a, 0i, 0i, 0u
-    %24:f16 = add %22, %23
-    %25:f16 = access %l_a_i, 0i, 0u
-    %26:f16 = add %24, %25
-    %27:f16 = access %l_a_i_i, 0u
-    %28:f16 = add %26, %27
-    store %s, %28
-    ret
-  }
+kernel void f(const constant tint_array<half2x3, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  const constant tint_array<half2x3, 4>* const p_a = tint_module_vars.a;
+  const constant half2x3* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant half3* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
+  tint_array<half2x3, 4> const l_a = (*p_a);
+  half2x3 const l_a_i = (*p_a_i);
+  half3 const l_a_i_i = (*p_a_i_i);
+  (*tint_module_vars.s) = ((((*p_a_i_i)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index dee7935..8910f77 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat2x3<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
+struct tint_module_vars_struct {
+  const constant tint_array<half2x3, 4>* a;
+  device half* s;
+};
+
+kernel void f(const constant tint_array<half2x3, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  const constant tint_array<half2x3, 4>* const p_a = tint_module_vars.a;
+  const constant half2x3* const p_a_2 = (&(*p_a)[2]);
+  const constant half3* const p_a_2_1 = (&(*p_a_2)[1]);
+  tint_array<half2x3, 4> const l_a = (*p_a);
+  half2x3 const l_a_i = (*p_a_2);
+  half3 const l_a_i_i = (*p_a_2_1);
+  (*tint_module_vars.s) = ((((*p_a_2_1)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<mat2x3<f16>, 4>, read> = let %a
-    %5:ptr<uniform, mat2x3<f16>, read> = access %p_a, 2i
-    %p_a_2:ptr<uniform, mat2x3<f16>, read> = let %5
-    %7:ptr<uniform, vec3<f16>, read> = access %p_a_2, 1i
-    %p_a_2_1:ptr<uniform, vec3<f16>, read> = let %7
-    %9:array<mat2x3<f16>, 4> = load %p_a
-    %l_a:array<mat2x3<f16>, 4> = let %9
-    %11:mat2x3<f16> = load %p_a_2
-    %l_a_i:mat2x3<f16> = let %11
-    %13:vec3<f16> = load %p_a_2_1
-    %l_a_i_i:vec3<f16> = let %13
-    %15:f16 = load_vector_element %p_a_2_1, 0u
-    %16:f16 = access %l_a, 0i, 0i, 0u
-    %17:f16 = add %15, %16
-    %18:f16 = access %l_a_i, 0i, 0u
-    %19:f16 = add %17, %18
-    %20:f16 = access %l_a_i_i, 0u
-    %21:f16 = add %19, %20
-    store %s, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 2df98cd..a52a437 100644
--- 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
@@ -1,64 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat2x3<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<half2x3, 4>* u;
+  device half* s;
+};
 
-%a = func(%a_1:array<mat2x3<f16>, 4>):f16 {  # %a_1: 'a'
-  $B2: {
-    %5:f16 = access %a_1, 0i, 0i, 0u
-    ret %5
-  }
+half a(tint_array<half2x3, 4> a) {
+  return a[0][0][0u];
 }
-%b = func(%m:mat2x3<f16>):f16 {
-  $B3: {
-    %8:f16 = access %m, 0i, 0u
-    ret %8
-  }
+half b(half2x3 m) {
+  return m[0][0u];
 }
-%c = func(%v:vec3<f16>):f16 {
-  $B4: {
-    %11:f16 = access %v, 0u
-    ret %11
-  }
+half c(half3 v) {
+  return v[0u];
 }
-%d = func(%f:f16):f16 {
-  $B5: {
-    ret %f
-  }
+half d(half f) {
+  return f;
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B6: {
-    %15:array<mat2x3<f16>, 4> = load %u
-    %16:f16 = call %a, %15
-    %17:f16 = let %16
-    %18:ptr<uniform, mat2x3<f16>, read> = access %u, 1i
-    %19:mat2x3<f16> = load %18
-    %20:f16 = call %b, %19
-    %21:f16 = add %17, %20
-    %22:f16 = let %21
-    %23:ptr<uniform, vec3<f16>, read> = access %u, 1i, 0i
-    %24:vec3<f16> = load %23
-    %25:vec3<f16> = swizzle %24, zxy
-    %26:f16 = call %c, %25
-    %27:f16 = add %22, %26
-    %28:f16 = let %27
-    %29:ptr<uniform, vec3<f16>, read> = access %u, 1i, 0i
-    %30:vec3<f16> = load %29
-    %31:vec3<f16> = swizzle %30, zxy
-    %32:f16 = access %31, 0u
-    %33:f16 = call %d, %32
-    %34:f16 = add %28, %33
-    store %s, %34
-    ret
-  }
+kernel void f(const constant tint_array<half2x3, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half const v_1 = a((*tint_module_vars.u));
+  half const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
+  half const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].zxy));
+  (*tint_module_vars.s) = (v_3 + d((*tint_module_vars.u)[1][0].zxy[0u]));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index e840869..acf14e0 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat2x3<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-  %p:ptr<private, array<mat2x3<f16>, 4>, read_write> = var
+struct tint_module_vars_struct {
+  const constant tint_array<half2x3, 4>* u;
+  device half* s;
+  thread tint_array<half2x3, 4>* p;
+};
+
+kernel void f(const constant tint_array<half2x3, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
+  thread tint_array<half2x3, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].zxy;
+  (*tint_module_vars.p)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
+  (*tint_module_vars.s) = (*tint_module_vars.p)[1][0][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:array<mat2x3<f16>, 4> = load %u
-    store %p, %5
-    %6:ptr<private, mat2x3<f16>, read_write> = access %p, 1i
-    %7:ptr<uniform, mat2x3<f16>, read> = access %u, 2i
-    %8:mat2x3<f16> = load %7
-    store %6, %8
-    %9:ptr<private, vec3<f16>, read_write> = access %p, 1i, 0i
-    %10:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
-    %11:vec3<f16> = load %10
-    %12:vec3<f16> = swizzle %11, zxy
-    store %9, %12
-    %13:ptr<private, vec3<f16>, read_write> = access %p, 1i, 0i
-    %14:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
-    %15:f16 = load_vector_element %14, 0u
-    store_vector_element %13, 0u, %15
-    %16:ptr<private, vec3<f16>, read_write> = access %p, 1i, 0i
-    %17:f16 = load_vector_element %16, 0u
-    store %s, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index cdb2914..5b3331d 100644
--- 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
@@ -1,51 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat2x3<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %counter:ptr<private, i32, read_write> = var, 0i
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float2x3, 4>* a;
+  device float* s;
+  thread int* counter;
+};
 
-%i = func():i32 {
-  $B2: {
-    %5:i32 = load %counter
-    %6:i32 = add %5, 1i
-    store %counter, %6
-    %7:i32 = load %counter
-    ret %7
-  }
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_a:ptr<uniform, array<mat2x3<f32>, 4>, read> = let %a
-    %10:i32 = call %i
-    %11:ptr<uniform, mat2x3<f32>, read> = access %p_a, %10
-    %p_a_i:ptr<uniform, mat2x3<f32>, read> = let %11
-    %13:i32 = call %i
-    %14:ptr<uniform, vec3<f32>, read> = access %p_a_i, %13
-    %p_a_i_i:ptr<uniform, vec3<f32>, read> = let %14
-    %16:array<mat2x3<f32>, 4> = load %p_a
-    %l_a:array<mat2x3<f32>, 4> = let %16
-    %18:mat2x3<f32> = load %p_a_i
-    %l_a_i:mat2x3<f32> = let %18
-    %20:vec3<f32> = load %p_a_i_i
-    %l_a_i_i:vec3<f32> = let %20
-    %22:f32 = load_vector_element %p_a_i_i, 0u
-    %23:f32 = access %l_a, 0i, 0i, 0u
-    %24:f32 = add %22, %23
-    %25:f32 = access %l_a_i, 0i, 0u
-    %26:f32 = add %24, %25
-    %27:f32 = access %l_a_i_i, 0u
-    %28:f32 = add %26, %27
-    store %s, %28
-    ret
-  }
+kernel void f(const constant tint_array<float2x3, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  const constant tint_array<float2x3, 4>* const p_a = tint_module_vars.a;
+  const constant float2x3* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant float3* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
+  tint_array<float2x3, 4> const l_a = (*p_a);
+  float2x3 const l_a_i = (*p_a_i);
+  float3 const l_a_i_i = (*p_a_i_i);
+  (*tint_module_vars.s) = ((((*p_a_i_i)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 46fb5fb..9dbb093 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat2x3<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+struct tint_module_vars_struct {
+  const constant tint_array<float2x3, 4>* a;
+  device float* s;
+};
+
+kernel void f(const constant tint_array<float2x3, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  const constant tint_array<float2x3, 4>* const p_a = tint_module_vars.a;
+  const constant float2x3* const p_a_2 = (&(*p_a)[2]);
+  const constant float3* const p_a_2_1 = (&(*p_a_2)[1]);
+  tint_array<float2x3, 4> const l_a = (*p_a);
+  float2x3 const l_a_i = (*p_a_2);
+  float3 const l_a_i_i = (*p_a_2_1);
+  (*tint_module_vars.s) = ((((*p_a_2_1)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<mat2x3<f32>, 4>, read> = let %a
-    %5:ptr<uniform, mat2x3<f32>, read> = access %p_a, 2i
-    %p_a_2:ptr<uniform, mat2x3<f32>, read> = let %5
-    %7:ptr<uniform, vec3<f32>, read> = access %p_a_2, 1i
-    %p_a_2_1:ptr<uniform, vec3<f32>, read> = let %7
-    %9:array<mat2x3<f32>, 4> = load %p_a
-    %l_a:array<mat2x3<f32>, 4> = let %9
-    %11:mat2x3<f32> = load %p_a_2
-    %l_a_i:mat2x3<f32> = let %11
-    %13:vec3<f32> = load %p_a_2_1
-    %l_a_i_i:vec3<f32> = let %13
-    %15:f32 = load_vector_element %p_a_2_1, 0u
-    %16:f32 = access %l_a, 0i, 0i, 0u
-    %17:f32 = add %15, %16
-    %18:f32 = access %l_a_i, 0i, 0u
-    %19:f32 = add %17, %18
-    %20:f32 = access %l_a_i_i, 0u
-    %21:f32 = add %19, %20
-    store %s, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index beb17bf..8348081 100644
--- 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
@@ -1,64 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat2x3<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float2x3, 4>* u;
+  device float* s;
+};
 
-%a = func(%a_1:array<mat2x3<f32>, 4>):f32 {  # %a_1: 'a'
-  $B2: {
-    %5:f32 = access %a_1, 0i, 0i, 0u
-    ret %5
-  }
+float a(tint_array<float2x3, 4> a) {
+  return a[0][0][0u];
 }
-%b = func(%m:mat2x3<f32>):f32 {
-  $B3: {
-    %8:f32 = access %m, 0i, 0u
-    ret %8
-  }
+float b(float2x3 m) {
+  return m[0][0u];
 }
-%c = func(%v:vec3<f32>):f32 {
-  $B4: {
-    %11:f32 = access %v, 0u
-    ret %11
-  }
+float c(float3 v) {
+  return v[0u];
 }
-%d = func(%f:f32):f32 {
-  $B5: {
-    ret %f
-  }
+float d(float f) {
+  return f;
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B6: {
-    %15:array<mat2x3<f32>, 4> = load %u
-    %16:f32 = call %a, %15
-    %17:f32 = let %16
-    %18:ptr<uniform, mat2x3<f32>, read> = access %u, 1i
-    %19:mat2x3<f32> = load %18
-    %20:f32 = call %b, %19
-    %21:f32 = add %17, %20
-    %22:f32 = let %21
-    %23:ptr<uniform, vec3<f32>, read> = access %u, 1i, 0i
-    %24:vec3<f32> = load %23
-    %25:vec3<f32> = swizzle %24, zxy
-    %26:f32 = call %c, %25
-    %27:f32 = add %22, %26
-    %28:f32 = let %27
-    %29:ptr<uniform, vec3<f32>, read> = access %u, 1i, 0i
-    %30:vec3<f32> = load %29
-    %31:vec3<f32> = swizzle %30, zxy
-    %32:f32 = access %31, 0u
-    %33:f32 = call %d, %32
-    %34:f32 = add %28, %33
-    store %s, %34
-    ret
-  }
+kernel void f(const constant tint_array<float2x3, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float const v_1 = a((*tint_module_vars.u));
+  float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
+  float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].zxy));
+  (*tint_module_vars.s) = (v_3 + d((*tint_module_vars.u)[1][0].zxy[0u]));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 654f700..8b4a1a1 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat2x3<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %p:ptr<private, array<mat2x3<f32>, 4>, read_write> = var
+struct tint_module_vars_struct {
+  const constant tint_array<float2x3, 4>* u;
+  device float* s;
+  thread tint_array<float2x3, 4>* p;
+};
+
+kernel void f(const constant tint_array<float2x3, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread tint_array<float2x3, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].zxy;
+  (*tint_module_vars.p)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
+  (*tint_module_vars.s) = (*tint_module_vars.p)[1][0][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:array<mat2x3<f32>, 4> = load %u
-    store %p, %5
-    %6:ptr<private, mat2x3<f32>, read_write> = access %p, 1i
-    %7:ptr<uniform, mat2x3<f32>, read> = access %u, 2i
-    %8:mat2x3<f32> = load %7
-    store %6, %8
-    %9:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
-    %10:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
-    %11:vec3<f32> = load %10
-    %12:vec3<f32> = swizzle %11, zxy
-    store %9, %12
-    %13:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
-    %14:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
-    %15:f32 = load_vector_element %14, 0u
-    store_vector_element %13, 0u, %15
-    %16:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
-    %17:f32 = load_vector_element %16, 0u
-    store %s, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 9442868..d7eb131 100644
--- 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
@@ -1,51 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat2x4<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-  %counter:ptr<private, i32, read_write> = var, 0i
-}
+struct tint_module_vars_struct {
+  const constant tint_array<half2x4, 4>* a;
+  device half* s;
+  thread int* counter;
+};
 
-%i = func():i32 {
-  $B2: {
-    %5:i32 = load %counter
-    %6:i32 = add %5, 1i
-    store %counter, %6
-    %7:i32 = load %counter
-    ret %7
-  }
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_a:ptr<uniform, array<mat2x4<f16>, 4>, read> = let %a
-    %10:i32 = call %i
-    %11:ptr<uniform, mat2x4<f16>, read> = access %p_a, %10
-    %p_a_i:ptr<uniform, mat2x4<f16>, read> = let %11
-    %13:i32 = call %i
-    %14:ptr<uniform, vec4<f16>, read> = access %p_a_i, %13
-    %p_a_i_i:ptr<uniform, vec4<f16>, read> = let %14
-    %16:array<mat2x4<f16>, 4> = load %p_a
-    %l_a:array<mat2x4<f16>, 4> = let %16
-    %18:mat2x4<f16> = load %p_a_i
-    %l_a_i:mat2x4<f16> = let %18
-    %20:vec4<f16> = load %p_a_i_i
-    %l_a_i_i:vec4<f16> = let %20
-    %22:f16 = load_vector_element %p_a_i_i, 0u
-    %23:f16 = access %l_a, 0i, 0i, 0u
-    %24:f16 = add %22, %23
-    %25:f16 = access %l_a_i, 0i, 0u
-    %26:f16 = add %24, %25
-    %27:f16 = access %l_a_i_i, 0u
-    %28:f16 = add %26, %27
-    store %s, %28
-    ret
-  }
+kernel void f(const constant tint_array<half2x4, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  const constant tint_array<half2x4, 4>* const p_a = tint_module_vars.a;
+  const constant half2x4* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant half4* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
+  tint_array<half2x4, 4> const l_a = (*p_a);
+  half2x4 const l_a_i = (*p_a_i);
+  half4 const l_a_i_i = (*p_a_i_i);
+  (*tint_module_vars.s) = ((((*p_a_i_i)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index b350cbf..605e189 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat2x4<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
+struct tint_module_vars_struct {
+  const constant tint_array<half2x4, 4>* a;
+  device half* s;
+};
+
+kernel void f(const constant tint_array<half2x4, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  const constant tint_array<half2x4, 4>* const p_a = tint_module_vars.a;
+  const constant half2x4* const p_a_2 = (&(*p_a)[2]);
+  const constant half4* const p_a_2_1 = (&(*p_a_2)[1]);
+  tint_array<half2x4, 4> const l_a = (*p_a);
+  half2x4 const l_a_i = (*p_a_2);
+  half4 const l_a_i_i = (*p_a_2_1);
+  (*tint_module_vars.s) = ((((*p_a_2_1)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<mat2x4<f16>, 4>, read> = let %a
-    %5:ptr<uniform, mat2x4<f16>, read> = access %p_a, 2i
-    %p_a_2:ptr<uniform, mat2x4<f16>, read> = let %5
-    %7:ptr<uniform, vec4<f16>, read> = access %p_a_2, 1i
-    %p_a_2_1:ptr<uniform, vec4<f16>, read> = let %7
-    %9:array<mat2x4<f16>, 4> = load %p_a
-    %l_a:array<mat2x4<f16>, 4> = let %9
-    %11:mat2x4<f16> = load %p_a_2
-    %l_a_i:mat2x4<f16> = let %11
-    %13:vec4<f16> = load %p_a_2_1
-    %l_a_i_i:vec4<f16> = let %13
-    %15:f16 = load_vector_element %p_a_2_1, 0u
-    %16:f16 = access %l_a, 0i, 0i, 0u
-    %17:f16 = add %15, %16
-    %18:f16 = access %l_a_i, 0i, 0u
-    %19:f16 = add %17, %18
-    %20:f16 = access %l_a_i_i, 0u
-    %21:f16 = add %19, %20
-    store %s, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 50ecceb..226eeed 100644
--- 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
@@ -1,64 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat2x4<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<half2x4, 4>* u;
+  device half* s;
+};
 
-%a = func(%a_1:array<mat2x4<f16>, 4>):f16 {  # %a_1: 'a'
-  $B2: {
-    %5:f16 = access %a_1, 0i, 0i, 0u
-    ret %5
-  }
+half a(tint_array<half2x4, 4> a) {
+  return a[0][0][0u];
 }
-%b = func(%m:mat2x4<f16>):f16 {
-  $B3: {
-    %8:f16 = access %m, 0i, 0u
-    ret %8
-  }
+half b(half2x4 m) {
+  return m[0][0u];
 }
-%c = func(%v:vec4<f16>):f16 {
-  $B4: {
-    %11:f16 = access %v, 0u
-    ret %11
-  }
+half c(half4 v) {
+  return v[0u];
 }
-%d = func(%f:f16):f16 {
-  $B5: {
-    ret %f
-  }
+half d(half f) {
+  return f;
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B6: {
-    %15:array<mat2x4<f16>, 4> = load %u
-    %16:f16 = call %a, %15
-    %17:f16 = let %16
-    %18:ptr<uniform, mat2x4<f16>, read> = access %u, 1i
-    %19:mat2x4<f16> = load %18
-    %20:f16 = call %b, %19
-    %21:f16 = add %17, %20
-    %22:f16 = let %21
-    %23:ptr<uniform, vec4<f16>, read> = access %u, 1i, 0i
-    %24:vec4<f16> = load %23
-    %25:vec4<f16> = swizzle %24, ywxz
-    %26:f16 = call %c, %25
-    %27:f16 = add %22, %26
-    %28:f16 = let %27
-    %29:ptr<uniform, vec4<f16>, read> = access %u, 1i, 0i
-    %30:vec4<f16> = load %29
-    %31:vec4<f16> = swizzle %30, ywxz
-    %32:f16 = access %31, 0u
-    %33:f16 = call %d, %32
-    %34:f16 = add %28, %33
-    store %s, %34
-    ret
-  }
+kernel void f(const constant tint_array<half2x4, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half const v_1 = a((*tint_module_vars.u));
+  half const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
+  half const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].ywxz));
+  (*tint_module_vars.s) = (v_3 + d((*tint_module_vars.u)[1][0].ywxz[0u]));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index e1328d1..e4d093e 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat2x4<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-  %p:ptr<private, array<mat2x4<f16>, 4>, read_write> = var
+struct tint_module_vars_struct {
+  const constant tint_array<half2x4, 4>* u;
+  device half* s;
+  thread tint_array<half2x4, 4>* p;
+};
+
+kernel void f(const constant tint_array<half2x4, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
+  thread tint_array<half2x4, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
+  (*tint_module_vars.p)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
+  (*tint_module_vars.s) = (*tint_module_vars.p)[1][0][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:array<mat2x4<f16>, 4> = load %u
-    store %p, %5
-    %6:ptr<private, mat2x4<f16>, read_write> = access %p, 1i
-    %7:ptr<uniform, mat2x4<f16>, read> = access %u, 2i
-    %8:mat2x4<f16> = load %7
-    store %6, %8
-    %9:ptr<private, vec4<f16>, read_write> = access %p, 1i, 0i
-    %10:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
-    %11:vec4<f16> = load %10
-    %12:vec4<f16> = swizzle %11, ywxz
-    store %9, %12
-    %13:ptr<private, vec4<f16>, read_write> = access %p, 1i, 0i
-    %14:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
-    %15:f16 = load_vector_element %14, 0u
-    store_vector_element %13, 0u, %15
-    %16:ptr<private, vec4<f16>, read_write> = access %p, 1i, 0i
-    %17:f16 = load_vector_element %16, 0u
-    store %s, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index c2e1e27..9be526c 100644
--- 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
@@ -1,35 +1,26 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+struct tint_module_vars_struct {
+  const constant tint_array<half2x4, 4>* u;
+  device tint_array<half2x4, 4>* s;
+};
+
+kernel void f(const constant tint_array<half2x4, 4>* u [[buffer(0)]], device tint_array<half2x4, 4>* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
+  (*tint_module_vars.s)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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_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
index 554498d..7fce1c5 100644
--- 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
@@ -1,51 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat2x4<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %counter:ptr<private, i32, read_write> = var, 0i
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float2x4, 4>* a;
+  device float* s;
+  thread int* counter;
+};
 
-%i = func():i32 {
-  $B2: {
-    %5:i32 = load %counter
-    %6:i32 = add %5, 1i
-    store %counter, %6
-    %7:i32 = load %counter
-    ret %7
-  }
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_a:ptr<uniform, array<mat2x4<f32>, 4>, read> = let %a
-    %10:i32 = call %i
-    %11:ptr<uniform, mat2x4<f32>, read> = access %p_a, %10
-    %p_a_i:ptr<uniform, mat2x4<f32>, read> = let %11
-    %13:i32 = call %i
-    %14:ptr<uniform, vec4<f32>, read> = access %p_a_i, %13
-    %p_a_i_i:ptr<uniform, vec4<f32>, read> = let %14
-    %16:array<mat2x4<f32>, 4> = load %p_a
-    %l_a:array<mat2x4<f32>, 4> = let %16
-    %18:mat2x4<f32> = load %p_a_i
-    %l_a_i:mat2x4<f32> = let %18
-    %20:vec4<f32> = load %p_a_i_i
-    %l_a_i_i:vec4<f32> = let %20
-    %22:f32 = load_vector_element %p_a_i_i, 0u
-    %23:f32 = access %l_a, 0i, 0i, 0u
-    %24:f32 = add %22, %23
-    %25:f32 = access %l_a_i, 0i, 0u
-    %26:f32 = add %24, %25
-    %27:f32 = access %l_a_i_i, 0u
-    %28:f32 = add %26, %27
-    store %s, %28
-    ret
-  }
+kernel void f(const constant tint_array<float2x4, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  const constant tint_array<float2x4, 4>* const p_a = tint_module_vars.a;
+  const constant float2x4* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant float4* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
+  tint_array<float2x4, 4> const l_a = (*p_a);
+  float2x4 const l_a_i = (*p_a_i);
+  float4 const l_a_i_i = (*p_a_i_i);
+  (*tint_module_vars.s) = ((((*p_a_i_i)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index a23ad8f..3b6e56a 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat2x4<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+struct tint_module_vars_struct {
+  const constant tint_array<float2x4, 4>* a;
+  device float* s;
+};
+
+kernel void f(const constant tint_array<float2x4, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  const constant tint_array<float2x4, 4>* const p_a = tint_module_vars.a;
+  const constant float2x4* const p_a_2 = (&(*p_a)[2]);
+  const constant float4* const p_a_2_1 = (&(*p_a_2)[1]);
+  tint_array<float2x4, 4> const l_a = (*p_a);
+  float2x4 const l_a_i = (*p_a_2);
+  float4 const l_a_i_i = (*p_a_2_1);
+  (*tint_module_vars.s) = ((((*p_a_2_1)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<mat2x4<f32>, 4>, read> = let %a
-    %5:ptr<uniform, mat2x4<f32>, read> = access %p_a, 2i
-    %p_a_2:ptr<uniform, mat2x4<f32>, read> = let %5
-    %7:ptr<uniform, vec4<f32>, read> = access %p_a_2, 1i
-    %p_a_2_1:ptr<uniform, vec4<f32>, read> = let %7
-    %9:array<mat2x4<f32>, 4> = load %p_a
-    %l_a:array<mat2x4<f32>, 4> = let %9
-    %11:mat2x4<f32> = load %p_a_2
-    %l_a_i:mat2x4<f32> = let %11
-    %13:vec4<f32> = load %p_a_2_1
-    %l_a_i_i:vec4<f32> = let %13
-    %15:f32 = load_vector_element %p_a_2_1, 0u
-    %16:f32 = access %l_a, 0i, 0i, 0u
-    %17:f32 = add %15, %16
-    %18:f32 = access %l_a_i, 0i, 0u
-    %19:f32 = add %17, %18
-    %20:f32 = access %l_a_i_i, 0u
-    %21:f32 = add %19, %20
-    store %s, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 520f113..a904ad7 100644
--- 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
@@ -1,64 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat2x4<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float2x4, 4>* u;
+  device float* s;
+};
 
-%a = func(%a_1:array<mat2x4<f32>, 4>):f32 {  # %a_1: 'a'
-  $B2: {
-    %5:f32 = access %a_1, 0i, 0i, 0u
-    ret %5
-  }
+float a(tint_array<float2x4, 4> a) {
+  return a[0][0][0u];
 }
-%b = func(%m:mat2x4<f32>):f32 {
-  $B3: {
-    %8:f32 = access %m, 0i, 0u
-    ret %8
-  }
+float b(float2x4 m) {
+  return m[0][0u];
 }
-%c = func(%v:vec4<f32>):f32 {
-  $B4: {
-    %11:f32 = access %v, 0u
-    ret %11
-  }
+float c(float4 v) {
+  return v[0u];
 }
-%d = func(%f:f32):f32 {
-  $B5: {
-    ret %f
-  }
+float d(float f) {
+  return f;
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B6: {
-    %15:array<mat2x4<f32>, 4> = load %u
-    %16:f32 = call %a, %15
-    %17:f32 = let %16
-    %18:ptr<uniform, mat2x4<f32>, read> = access %u, 1i
-    %19:mat2x4<f32> = load %18
-    %20:f32 = call %b, %19
-    %21:f32 = add %17, %20
-    %22:f32 = let %21
-    %23:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
-    %24:vec4<f32> = load %23
-    %25:vec4<f32> = swizzle %24, ywxz
-    %26:f32 = call %c, %25
-    %27:f32 = add %22, %26
-    %28:f32 = let %27
-    %29:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
-    %30:vec4<f32> = load %29
-    %31:vec4<f32> = swizzle %30, ywxz
-    %32:f32 = access %31, 0u
-    %33:f32 = call %d, %32
-    %34:f32 = add %28, %33
-    store %s, %34
-    ret
-  }
+kernel void f(const constant tint_array<float2x4, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float const v_1 = a((*tint_module_vars.u));
+  float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
+  float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].ywxz));
+  (*tint_module_vars.s) = (v_3 + d((*tint_module_vars.u)[1][0].ywxz[0u]));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 333936e..ee51d8f 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat2x4<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %p:ptr<private, array<mat2x4<f32>, 4>, read_write> = var
+struct tint_module_vars_struct {
+  const constant tint_array<float2x4, 4>* u;
+  device float* s;
+  thread tint_array<float2x4, 4>* p;
+};
+
+kernel void f(const constant tint_array<float2x4, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread tint_array<float2x4, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
+  (*tint_module_vars.p)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
+  (*tint_module_vars.s) = (*tint_module_vars.p)[1][0][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:array<mat2x4<f32>, 4> = load %u
-    store %p, %5
-    %6:ptr<private, mat2x4<f32>, read_write> = access %p, 1i
-    %7:ptr<uniform, mat2x4<f32>, read> = access %u, 2i
-    %8:mat2x4<f32> = load %7
-    store %6, %8
-    %9:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
-    %10:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
-    %11:vec4<f32> = load %10
-    %12:vec4<f32> = swizzle %11, ywxz
-    store %9, %12
-    %13:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
-    %14:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
-    %15:f32 = load_vector_element %14, 0u
-    store_vector_element %13, 0u, %15
-    %16:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
-    %17:f32 = load_vector_element %16, 0u
-    store %s, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 8ed1610..2f1ed75 100644
--- 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
@@ -1,35 +1,26 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+struct tint_module_vars_struct {
+  const constant tint_array<float2x4, 4>* u;
+  device tint_array<float2x4, 4>* s;
+};
+
+kernel void f(const constant tint_array<float2x4, 4>* u [[buffer(0)]], device tint_array<float2x4, 4>* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
+  (*tint_module_vars.s)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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/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
index f2c7e12..69f3b35 100644
--- 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
@@ -1,51 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat3x3<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %counter:ptr<private, i32, read_write> = var, 0i
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float3x3, 4>* a;
+  device float* s;
+  thread int* counter;
+};
 
-%i = func():i32 {
-  $B2: {
-    %5:i32 = load %counter
-    %6:i32 = add %5, 1i
-    store %counter, %6
-    %7:i32 = load %counter
-    ret %7
-  }
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_a:ptr<uniform, array<mat3x3<f32>, 4>, read> = let %a
-    %10:i32 = call %i
-    %11:ptr<uniform, mat3x3<f32>, read> = access %p_a, %10
-    %p_a_i:ptr<uniform, mat3x3<f32>, read> = let %11
-    %13:i32 = call %i
-    %14:ptr<uniform, vec3<f32>, read> = access %p_a_i, %13
-    %p_a_i_i:ptr<uniform, vec3<f32>, read> = let %14
-    %16:array<mat3x3<f32>, 4> = load %p_a
-    %l_a:array<mat3x3<f32>, 4> = let %16
-    %18:mat3x3<f32> = load %p_a_i
-    %l_a_i:mat3x3<f32> = let %18
-    %20:vec3<f32> = load %p_a_i_i
-    %l_a_i_i:vec3<f32> = let %20
-    %22:f32 = load_vector_element %p_a_i_i, 0u
-    %23:f32 = access %l_a, 0i, 0i, 0u
-    %24:f32 = add %22, %23
-    %25:f32 = access %l_a_i, 0i, 0u
-    %26:f32 = add %24, %25
-    %27:f32 = access %l_a_i_i, 0u
-    %28:f32 = add %26, %27
-    store %s, %28
-    ret
-  }
+kernel void f(const constant tint_array<float3x3, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  const constant tint_array<float3x3, 4>* const p_a = tint_module_vars.a;
+  const constant float3x3* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant float3* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
+  tint_array<float3x3, 4> const l_a = (*p_a);
+  float3x3 const l_a_i = (*p_a_i);
+  float3 const l_a_i_i = (*p_a_i_i);
+  (*tint_module_vars.s) = ((((*p_a_i_i)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 4c5cab1..adace3c 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat3x3<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+struct tint_module_vars_struct {
+  const constant tint_array<float3x3, 4>* a;
+  device float* s;
+};
+
+kernel void f(const constant tint_array<float3x3, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  const constant tint_array<float3x3, 4>* const p_a = tint_module_vars.a;
+  const constant float3x3* const p_a_2 = (&(*p_a)[2]);
+  const constant float3* const p_a_2_1 = (&(*p_a_2)[1]);
+  tint_array<float3x3, 4> const l_a = (*p_a);
+  float3x3 const l_a_i = (*p_a_2);
+  float3 const l_a_i_i = (*p_a_2_1);
+  (*tint_module_vars.s) = ((((*p_a_2_1)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<mat3x3<f32>, 4>, read> = let %a
-    %5:ptr<uniform, mat3x3<f32>, read> = access %p_a, 2i
-    %p_a_2:ptr<uniform, mat3x3<f32>, read> = let %5
-    %7:ptr<uniform, vec3<f32>, read> = access %p_a_2, 1i
-    %p_a_2_1:ptr<uniform, vec3<f32>, read> = let %7
-    %9:array<mat3x3<f32>, 4> = load %p_a
-    %l_a:array<mat3x3<f32>, 4> = let %9
-    %11:mat3x3<f32> = load %p_a_2
-    %l_a_i:mat3x3<f32> = let %11
-    %13:vec3<f32> = load %p_a_2_1
-    %l_a_i_i:vec3<f32> = let %13
-    %15:f32 = load_vector_element %p_a_2_1, 0u
-    %16:f32 = access %l_a, 0i, 0i, 0u
-    %17:f32 = add %15, %16
-    %18:f32 = access %l_a_i, 0i, 0u
-    %19:f32 = add %17, %18
-    %20:f32 = access %l_a_i_i, 0u
-    %21:f32 = add %19, %20
-    store %s, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 0edee96..059c91c 100644
--- 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
@@ -1,64 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat3x3<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float3x3, 4>* u;
+  device float* s;
+};
 
-%a = func(%a_1:array<mat3x3<f32>, 4>):f32 {  # %a_1: 'a'
-  $B2: {
-    %5:f32 = access %a_1, 0i, 0i, 0u
-    ret %5
-  }
+float a(tint_array<float3x3, 4> a) {
+  return a[0][0][0u];
 }
-%b = func(%m:mat3x3<f32>):f32 {
-  $B3: {
-    %8:f32 = access %m, 0i, 0u
-    ret %8
-  }
+float b(float3x3 m) {
+  return m[0][0u];
 }
-%c = func(%v:vec3<f32>):f32 {
-  $B4: {
-    %11:f32 = access %v, 0u
-    ret %11
-  }
+float c(float3 v) {
+  return v[0u];
 }
-%d = func(%f:f32):f32 {
-  $B5: {
-    ret %f
-  }
+float d(float f) {
+  return f;
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B6: {
-    %15:array<mat3x3<f32>, 4> = load %u
-    %16:f32 = call %a, %15
-    %17:f32 = let %16
-    %18:ptr<uniform, mat3x3<f32>, read> = access %u, 1i
-    %19:mat3x3<f32> = load %18
-    %20:f32 = call %b, %19
-    %21:f32 = add %17, %20
-    %22:f32 = let %21
-    %23:ptr<uniform, vec3<f32>, read> = access %u, 1i, 0i
-    %24:vec3<f32> = load %23
-    %25:vec3<f32> = swizzle %24, zxy
-    %26:f32 = call %c, %25
-    %27:f32 = add %22, %26
-    %28:f32 = let %27
-    %29:ptr<uniform, vec3<f32>, read> = access %u, 1i, 0i
-    %30:vec3<f32> = load %29
-    %31:vec3<f32> = swizzle %30, zxy
-    %32:f32 = access %31, 0u
-    %33:f32 = call %d, %32
-    %34:f32 = add %28, %33
-    store %s, %34
-    ret
-  }
+kernel void f(const constant tint_array<float3x3, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float const v_1 = a((*tint_module_vars.u));
+  float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
+  float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].zxy));
+  (*tint_module_vars.s) = (v_3 + d((*tint_module_vars.u)[1][0].zxy[0u]));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 4091530..f4dc4b4 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat3x3<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %p:ptr<private, array<mat3x3<f32>, 4>, read_write> = var
+struct tint_module_vars_struct {
+  const constant tint_array<float3x3, 4>* u;
+  device float* s;
+  thread tint_array<float3x3, 4>* p;
+};
+
+kernel void f(const constant tint_array<float3x3, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread tint_array<float3x3, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].zxy;
+  (*tint_module_vars.p)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
+  (*tint_module_vars.s) = (*tint_module_vars.p)[1][0][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:array<mat3x3<f32>, 4> = load %u
-    store %p, %5
-    %6:ptr<private, mat3x3<f32>, read_write> = access %p, 1i
-    %7:ptr<uniform, mat3x3<f32>, read> = access %u, 2i
-    %8:mat3x3<f32> = load %7
-    store %6, %8
-    %9:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
-    %10:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
-    %11:vec3<f32> = load %10
-    %12:vec3<f32> = swizzle %11, zxy
-    store %9, %12
-    %13:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
-    %14:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
-    %15:f32 = load_vector_element %14, 0u
-    store_vector_element %13, 0u, %15
-    %16:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
-    %17:f32 = load_vector_element %16, 0u
-    store %s, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 6ca088d..a211c1f 100644
--- 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
@@ -1,51 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat3x4<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %counter:ptr<private, i32, read_write> = var, 0i
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float3x4, 4>* a;
+  device float* s;
+  thread int* counter;
+};
 
-%i = func():i32 {
-  $B2: {
-    %5:i32 = load %counter
-    %6:i32 = add %5, 1i
-    store %counter, %6
-    %7:i32 = load %counter
-    ret %7
-  }
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_a:ptr<uniform, array<mat3x4<f32>, 4>, read> = let %a
-    %10:i32 = call %i
-    %11:ptr<uniform, mat3x4<f32>, read> = access %p_a, %10
-    %p_a_i:ptr<uniform, mat3x4<f32>, read> = let %11
-    %13:i32 = call %i
-    %14:ptr<uniform, vec4<f32>, read> = access %p_a_i, %13
-    %p_a_i_i:ptr<uniform, vec4<f32>, read> = let %14
-    %16:array<mat3x4<f32>, 4> = load %p_a
-    %l_a:array<mat3x4<f32>, 4> = let %16
-    %18:mat3x4<f32> = load %p_a_i
-    %l_a_i:mat3x4<f32> = let %18
-    %20:vec4<f32> = load %p_a_i_i
-    %l_a_i_i:vec4<f32> = let %20
-    %22:f32 = load_vector_element %p_a_i_i, 0u
-    %23:f32 = access %l_a, 0i, 0i, 0u
-    %24:f32 = add %22, %23
-    %25:f32 = access %l_a_i, 0i, 0u
-    %26:f32 = add %24, %25
-    %27:f32 = access %l_a_i_i, 0u
-    %28:f32 = add %26, %27
-    store %s, %28
-    ret
-  }
+kernel void f(const constant tint_array<float3x4, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  const constant tint_array<float3x4, 4>* const p_a = tint_module_vars.a;
+  const constant float3x4* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant float4* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
+  tint_array<float3x4, 4> const l_a = (*p_a);
+  float3x4 const l_a_i = (*p_a_i);
+  float4 const l_a_i_i = (*p_a_i_i);
+  (*tint_module_vars.s) = ((((*p_a_i_i)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 6446800..f6dba61 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat3x4<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+struct tint_module_vars_struct {
+  const constant tint_array<float3x4, 4>* a;
+  device float* s;
+};
+
+kernel void f(const constant tint_array<float3x4, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  const constant tint_array<float3x4, 4>* const p_a = tint_module_vars.a;
+  const constant float3x4* const p_a_2 = (&(*p_a)[2]);
+  const constant float4* const p_a_2_1 = (&(*p_a_2)[1]);
+  tint_array<float3x4, 4> const l_a = (*p_a);
+  float3x4 const l_a_i = (*p_a_2);
+  float4 const l_a_i_i = (*p_a_2_1);
+  (*tint_module_vars.s) = ((((*p_a_2_1)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<mat3x4<f32>, 4>, read> = let %a
-    %5:ptr<uniform, mat3x4<f32>, read> = access %p_a, 2i
-    %p_a_2:ptr<uniform, mat3x4<f32>, read> = let %5
-    %7:ptr<uniform, vec4<f32>, read> = access %p_a_2, 1i
-    %p_a_2_1:ptr<uniform, vec4<f32>, read> = let %7
-    %9:array<mat3x4<f32>, 4> = load %p_a
-    %l_a:array<mat3x4<f32>, 4> = let %9
-    %11:mat3x4<f32> = load %p_a_2
-    %l_a_i:mat3x4<f32> = let %11
-    %13:vec4<f32> = load %p_a_2_1
-    %l_a_i_i:vec4<f32> = let %13
-    %15:f32 = load_vector_element %p_a_2_1, 0u
-    %16:f32 = access %l_a, 0i, 0i, 0u
-    %17:f32 = add %15, %16
-    %18:f32 = access %l_a_i, 0i, 0u
-    %19:f32 = add %17, %18
-    %20:f32 = access %l_a_i_i, 0u
-    %21:f32 = add %19, %20
-    store %s, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 90adb9e..3d5f5fa 100644
--- 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
@@ -1,64 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat3x4<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float3x4, 4>* u;
+  device float* s;
+};
 
-%a = func(%a_1:array<mat3x4<f32>, 4>):f32 {  # %a_1: 'a'
-  $B2: {
-    %5:f32 = access %a_1, 0i, 0i, 0u
-    ret %5
-  }
+float a(tint_array<float3x4, 4> a) {
+  return a[0][0][0u];
 }
-%b = func(%m:mat3x4<f32>):f32 {
-  $B3: {
-    %8:f32 = access %m, 0i, 0u
-    ret %8
-  }
+float b(float3x4 m) {
+  return m[0][0u];
 }
-%c = func(%v:vec4<f32>):f32 {
-  $B4: {
-    %11:f32 = access %v, 0u
-    ret %11
-  }
+float c(float4 v) {
+  return v[0u];
 }
-%d = func(%f:f32):f32 {
-  $B5: {
-    ret %f
-  }
+float d(float f) {
+  return f;
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B6: {
-    %15:array<mat3x4<f32>, 4> = load %u
-    %16:f32 = call %a, %15
-    %17:f32 = let %16
-    %18:ptr<uniform, mat3x4<f32>, read> = access %u, 1i
-    %19:mat3x4<f32> = load %18
-    %20:f32 = call %b, %19
-    %21:f32 = add %17, %20
-    %22:f32 = let %21
-    %23:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
-    %24:vec4<f32> = load %23
-    %25:vec4<f32> = swizzle %24, ywxz
-    %26:f32 = call %c, %25
-    %27:f32 = add %22, %26
-    %28:f32 = let %27
-    %29:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
-    %30:vec4<f32> = load %29
-    %31:vec4<f32> = swizzle %30, ywxz
-    %32:f32 = access %31, 0u
-    %33:f32 = call %d, %32
-    %34:f32 = add %28, %33
-    store %s, %34
-    ret
-  }
+kernel void f(const constant tint_array<float3x4, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float const v_1 = a((*tint_module_vars.u));
+  float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
+  float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].ywxz));
+  (*tint_module_vars.s) = (v_3 + d((*tint_module_vars.u)[1][0].ywxz[0u]));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 99f53ef..eb86d59 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat3x4<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %p:ptr<private, array<mat3x4<f32>, 4>, read_write> = var
+struct tint_module_vars_struct {
+  const constant tint_array<float3x4, 4>* u;
+  device float* s;
+  thread tint_array<float3x4, 4>* p;
+};
+
+kernel void f(const constant tint_array<float3x4, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread tint_array<float3x4, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
+  (*tint_module_vars.p)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
+  (*tint_module_vars.s) = (*tint_module_vars.p)[1][0][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:array<mat3x4<f32>, 4> = load %u
-    store %p, %5
-    %6:ptr<private, mat3x4<f32>, read_write> = access %p, 1i
-    %7:ptr<uniform, mat3x4<f32>, read> = access %u, 2i
-    %8:mat3x4<f32> = load %7
-    store %6, %8
-    %9:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
-    %10:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
-    %11:vec4<f32> = load %10
-    %12:vec4<f32> = swizzle %11, ywxz
-    store %9, %12
-    %13:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
-    %14:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
-    %15:f32 = load_vector_element %14, 0u
-    store_vector_element %13, 0u, %15
-    %16:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
-    %17:f32 = load_vector_element %16, 0u
-    store %s, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index ce3ff04..8e92b5b 100644
--- 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
@@ -1,35 +1,26 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+struct tint_module_vars_struct {
+  const constant tint_array<float3x4, 4>* u;
+  device tint_array<float3x4, 4>* s;
+};
+
+kernel void f(const constant tint_array<float3x4, 4>* u [[buffer(0)]], device tint_array<float3x4, 4>* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
+  (*tint_module_vars.s)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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/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
index 3eb259d..c4eb513 100644
--- 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
@@ -1,51 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat4x2<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-  %counter:ptr<private, i32, read_write> = var, 0i
-}
+struct tint_module_vars_struct {
+  const constant tint_array<half4x2, 4>* a;
+  device half* s;
+  thread int* counter;
+};
 
-%i = func():i32 {
-  $B2: {
-    %5:i32 = load %counter
-    %6:i32 = add %5, 1i
-    store %counter, %6
-    %7:i32 = load %counter
-    ret %7
-  }
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_a:ptr<uniform, array<mat4x2<f16>, 4>, read> = let %a
-    %10:i32 = call %i
-    %11:ptr<uniform, mat4x2<f16>, read> = access %p_a, %10
-    %p_a_i:ptr<uniform, mat4x2<f16>, read> = let %11
-    %13:i32 = call %i
-    %14:ptr<uniform, vec2<f16>, read> = access %p_a_i, %13
-    %p_a_i_i:ptr<uniform, vec2<f16>, read> = let %14
-    %16:array<mat4x2<f16>, 4> = load %p_a
-    %l_a:array<mat4x2<f16>, 4> = let %16
-    %18:mat4x2<f16> = load %p_a_i
-    %l_a_i:mat4x2<f16> = let %18
-    %20:vec2<f16> = load %p_a_i_i
-    %l_a_i_i:vec2<f16> = let %20
-    %22:f16 = load_vector_element %p_a_i_i, 0u
-    %23:f16 = access %l_a, 0i, 0i, 0u
-    %24:f16 = add %22, %23
-    %25:f16 = access %l_a_i, 0i, 0u
-    %26:f16 = add %24, %25
-    %27:f16 = access %l_a_i_i, 0u
-    %28:f16 = add %26, %27
-    store %s, %28
-    ret
-  }
+kernel void f(const constant tint_array<half4x2, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  const constant tint_array<half4x2, 4>* const p_a = tint_module_vars.a;
+  const constant half4x2* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant half2* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
+  tint_array<half4x2, 4> const l_a = (*p_a);
+  half4x2 const l_a_i = (*p_a_i);
+  half2 const l_a_i_i = (*p_a_i_i);
+  (*tint_module_vars.s) = ((((*p_a_i_i)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 54b02cd..37afaef 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat4x2<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
+struct tint_module_vars_struct {
+  const constant tint_array<half4x2, 4>* a;
+  device half* s;
+};
+
+kernel void f(const constant tint_array<half4x2, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  const constant tint_array<half4x2, 4>* const p_a = tint_module_vars.a;
+  const constant half4x2* const p_a_2 = (&(*p_a)[2]);
+  const constant half2* const p_a_2_1 = (&(*p_a_2)[1]);
+  tint_array<half4x2, 4> const l_a = (*p_a);
+  half4x2 const l_a_i = (*p_a_2);
+  half2 const l_a_i_i = (*p_a_2_1);
+  (*tint_module_vars.s) = ((((*p_a_2_1)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<mat4x2<f16>, 4>, read> = let %a
-    %5:ptr<uniform, mat4x2<f16>, read> = access %p_a, 2i
-    %p_a_2:ptr<uniform, mat4x2<f16>, read> = let %5
-    %7:ptr<uniform, vec2<f16>, read> = access %p_a_2, 1i
-    %p_a_2_1:ptr<uniform, vec2<f16>, read> = let %7
-    %9:array<mat4x2<f16>, 4> = load %p_a
-    %l_a:array<mat4x2<f16>, 4> = let %9
-    %11:mat4x2<f16> = load %p_a_2
-    %l_a_i:mat4x2<f16> = let %11
-    %13:vec2<f16> = load %p_a_2_1
-    %l_a_i_i:vec2<f16> = let %13
-    %15:f16 = load_vector_element %p_a_2_1, 0u
-    %16:f16 = access %l_a, 0i, 0i, 0u
-    %17:f16 = add %15, %16
-    %18:f16 = access %l_a_i, 0i, 0u
-    %19:f16 = add %17, %18
-    %20:f16 = access %l_a_i_i, 0u
-    %21:f16 = add %19, %20
-    store %s, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 1fbe38c..4ca3bac4 100644
--- 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
@@ -1,64 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat4x2<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<half4x2, 4>* u;
+  device half* s;
+};
 
-%a = func(%a_1:array<mat4x2<f16>, 4>):f16 {  # %a_1: 'a'
-  $B2: {
-    %5:f16 = access %a_1, 0i, 0i, 0u
-    ret %5
-  }
+half a(tint_array<half4x2, 4> a) {
+  return a[0][0][0u];
 }
-%b = func(%m:mat4x2<f16>):f16 {
-  $B3: {
-    %8:f16 = access %m, 0i, 0u
-    ret %8
-  }
+half b(half4x2 m) {
+  return m[0][0u];
 }
-%c = func(%v:vec2<f16>):f16 {
-  $B4: {
-    %11:f16 = access %v, 0u
-    ret %11
-  }
+half c(half2 v) {
+  return v[0u];
 }
-%d = func(%f:f16):f16 {
-  $B5: {
-    ret %f
-  }
+half d(half f) {
+  return f;
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B6: {
-    %15:array<mat4x2<f16>, 4> = load %u
-    %16:f16 = call %a, %15
-    %17:f16 = let %16
-    %18:ptr<uniform, mat4x2<f16>, read> = access %u, 1i
-    %19:mat4x2<f16> = load %18
-    %20:f16 = call %b, %19
-    %21:f16 = add %17, %20
-    %22:f16 = let %21
-    %23:ptr<uniform, vec2<f16>, read> = access %u, 1i, 0i
-    %24:vec2<f16> = load %23
-    %25:vec2<f16> = swizzle %24, yx
-    %26:f16 = call %c, %25
-    %27:f16 = add %22, %26
-    %28:f16 = let %27
-    %29:ptr<uniform, vec2<f16>, read> = access %u, 1i, 0i
-    %30:vec2<f16> = load %29
-    %31:vec2<f16> = swizzle %30, yx
-    %32:f16 = access %31, 0u
-    %33:f16 = call %d, %32
-    %34:f16 = add %28, %33
-    store %s, %34
-    ret
-  }
+kernel void f(const constant tint_array<half4x2, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half const v_1 = a((*tint_module_vars.u));
+  half const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
+  half const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].yx));
+  (*tint_module_vars.s) = (v_3 + d((*tint_module_vars.u)[1][0].yx[0u]));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 1fc8634..b39d311 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat4x2<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-  %p:ptr<private, array<mat4x2<f16>, 4>, read_write> = var
+struct tint_module_vars_struct {
+  const constant tint_array<half4x2, 4>* u;
+  device half* s;
+  thread tint_array<half4x2, 4>* p;
+};
+
+kernel void f(const constant tint_array<half4x2, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
+  thread tint_array<half4x2, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].yx;
+  (*tint_module_vars.p)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
+  (*tint_module_vars.s) = (*tint_module_vars.p)[1][0][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:array<mat4x2<f16>, 4> = load %u
-    store %p, %5
-    %6:ptr<private, mat4x2<f16>, read_write> = access %p, 1i
-    %7:ptr<uniform, mat4x2<f16>, read> = access %u, 2i
-    %8:mat4x2<f16> = load %7
-    store %6, %8
-    %9:ptr<private, vec2<f16>, read_write> = access %p, 1i, 0i
-    %10:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1i
-    %11:vec2<f16> = load %10
-    %12:vec2<f16> = swizzle %11, yx
-    store %9, %12
-    %13:ptr<private, vec2<f16>, read_write> = access %p, 1i, 0i
-    %14:ptr<uniform, vec2<f16>, read> = access %u, 0i, 1i
-    %15:f16 = load_vector_element %14, 0u
-    store_vector_element %13, 0u, %15
-    %16:ptr<private, vec2<f16>, read_write> = access %p, 1i, 0i
-    %17:f16 = load_vector_element %16, 0u
-    store %s, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index d286f86..93389e9 100644
--- 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
@@ -1,35 +1,26 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+struct tint_module_vars_struct {
+  const constant tint_array<half4x2, 4>* u;
+  device tint_array<half4x2, 4>* s;
+};
+
+kernel void f(const constant tint_array<half4x2, 4>* u [[buffer(0)]], device tint_array<half4x2, 4>* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].yx;
+  (*tint_module_vars.s)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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_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
index ece1057..1f67ba9 100644
--- 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
@@ -1,51 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat4x2<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %counter:ptr<private, i32, read_write> = var, 0i
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float4x2, 4>* a;
+  device float* s;
+  thread int* counter;
+};
 
-%i = func():i32 {
-  $B2: {
-    %5:i32 = load %counter
-    %6:i32 = add %5, 1i
-    store %counter, %6
-    %7:i32 = load %counter
-    ret %7
-  }
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_a:ptr<uniform, array<mat4x2<f32>, 4>, read> = let %a
-    %10:i32 = call %i
-    %11:ptr<uniform, mat4x2<f32>, read> = access %p_a, %10
-    %p_a_i:ptr<uniform, mat4x2<f32>, read> = let %11
-    %13:i32 = call %i
-    %14:ptr<uniform, vec2<f32>, read> = access %p_a_i, %13
-    %p_a_i_i:ptr<uniform, vec2<f32>, read> = let %14
-    %16:array<mat4x2<f32>, 4> = load %p_a
-    %l_a:array<mat4x2<f32>, 4> = let %16
-    %18:mat4x2<f32> = load %p_a_i
-    %l_a_i:mat4x2<f32> = let %18
-    %20:vec2<f32> = load %p_a_i_i
-    %l_a_i_i:vec2<f32> = let %20
-    %22:f32 = load_vector_element %p_a_i_i, 0u
-    %23:f32 = access %l_a, 0i, 0i, 0u
-    %24:f32 = add %22, %23
-    %25:f32 = access %l_a_i, 0i, 0u
-    %26:f32 = add %24, %25
-    %27:f32 = access %l_a_i_i, 0u
-    %28:f32 = add %26, %27
-    store %s, %28
-    ret
-  }
+kernel void f(const constant tint_array<float4x2, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  const constant tint_array<float4x2, 4>* const p_a = tint_module_vars.a;
+  const constant float4x2* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant float2* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
+  tint_array<float4x2, 4> const l_a = (*p_a);
+  float4x2 const l_a_i = (*p_a_i);
+  float2 const l_a_i_i = (*p_a_i_i);
+  (*tint_module_vars.s) = ((((*p_a_i_i)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 616bce7..b3b6cc7 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat4x2<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+struct tint_module_vars_struct {
+  const constant tint_array<float4x2, 4>* a;
+  device float* s;
+};
+
+kernel void f(const constant tint_array<float4x2, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  const constant tint_array<float4x2, 4>* const p_a = tint_module_vars.a;
+  const constant float4x2* const p_a_2 = (&(*p_a)[2]);
+  const constant float2* const p_a_2_1 = (&(*p_a_2)[1]);
+  tint_array<float4x2, 4> const l_a = (*p_a);
+  float4x2 const l_a_i = (*p_a_2);
+  float2 const l_a_i_i = (*p_a_2_1);
+  (*tint_module_vars.s) = ((((*p_a_2_1)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<mat4x2<f32>, 4>, read> = let %a
-    %5:ptr<uniform, mat4x2<f32>, read> = access %p_a, 2i
-    %p_a_2:ptr<uniform, mat4x2<f32>, read> = let %5
-    %7:ptr<uniform, vec2<f32>, read> = access %p_a_2, 1i
-    %p_a_2_1:ptr<uniform, vec2<f32>, read> = let %7
-    %9:array<mat4x2<f32>, 4> = load %p_a
-    %l_a:array<mat4x2<f32>, 4> = let %9
-    %11:mat4x2<f32> = load %p_a_2
-    %l_a_i:mat4x2<f32> = let %11
-    %13:vec2<f32> = load %p_a_2_1
-    %l_a_i_i:vec2<f32> = let %13
-    %15:f32 = load_vector_element %p_a_2_1, 0u
-    %16:f32 = access %l_a, 0i, 0i, 0u
-    %17:f32 = add %15, %16
-    %18:f32 = access %l_a_i, 0i, 0u
-    %19:f32 = add %17, %18
-    %20:f32 = access %l_a_i_i, 0u
-    %21:f32 = add %19, %20
-    store %s, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 3e80621..88a5591 100644
--- 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
@@ -1,64 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat4x2<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float4x2, 4>* u;
+  device float* s;
+};
 
-%a = func(%a_1:array<mat4x2<f32>, 4>):f32 {  # %a_1: 'a'
-  $B2: {
-    %5:f32 = access %a_1, 0i, 0i, 0u
-    ret %5
-  }
+float a(tint_array<float4x2, 4> a) {
+  return a[0][0][0u];
 }
-%b = func(%m:mat4x2<f32>):f32 {
-  $B3: {
-    %8:f32 = access %m, 0i, 0u
-    ret %8
-  }
+float b(float4x2 m) {
+  return m[0][0u];
 }
-%c = func(%v:vec2<f32>):f32 {
-  $B4: {
-    %11:f32 = access %v, 0u
-    ret %11
-  }
+float c(float2 v) {
+  return v[0u];
 }
-%d = func(%f:f32):f32 {
-  $B5: {
-    ret %f
-  }
+float d(float f) {
+  return f;
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B6: {
-    %15:array<mat4x2<f32>, 4> = load %u
-    %16:f32 = call %a, %15
-    %17:f32 = let %16
-    %18:ptr<uniform, mat4x2<f32>, read> = access %u, 1i
-    %19:mat4x2<f32> = load %18
-    %20:f32 = call %b, %19
-    %21:f32 = add %17, %20
-    %22:f32 = let %21
-    %23:ptr<uniform, vec2<f32>, read> = access %u, 1i, 0i
-    %24:vec2<f32> = load %23
-    %25:vec2<f32> = swizzle %24, yx
-    %26:f32 = call %c, %25
-    %27:f32 = add %22, %26
-    %28:f32 = let %27
-    %29:ptr<uniform, vec2<f32>, read> = access %u, 1i, 0i
-    %30:vec2<f32> = load %29
-    %31:vec2<f32> = swizzle %30, yx
-    %32:f32 = access %31, 0u
-    %33:f32 = call %d, %32
-    %34:f32 = add %28, %33
-    store %s, %34
-    ret
-  }
+kernel void f(const constant tint_array<float4x2, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float const v_1 = a((*tint_module_vars.u));
+  float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
+  float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].yx));
+  (*tint_module_vars.s) = (v_3 + d((*tint_module_vars.u)[1][0].yx[0u]));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 180d603..9da2dfb 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat4x2<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %p:ptr<private, array<mat4x2<f32>, 4>, read_write> = var
+struct tint_module_vars_struct {
+  const constant tint_array<float4x2, 4>* u;
+  device float* s;
+  thread tint_array<float4x2, 4>* p;
+};
+
+kernel void f(const constant tint_array<float4x2, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread tint_array<float4x2, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].yx;
+  (*tint_module_vars.p)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
+  (*tint_module_vars.s) = (*tint_module_vars.p)[1][0][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:array<mat4x2<f32>, 4> = load %u
-    store %p, %5
-    %6:ptr<private, mat4x2<f32>, read_write> = access %p, 1i
-    %7:ptr<uniform, mat4x2<f32>, read> = access %u, 2i
-    %8:mat4x2<f32> = load %7
-    store %6, %8
-    %9:ptr<private, vec2<f32>, read_write> = access %p, 1i, 0i
-    %10:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
-    %11:vec2<f32> = load %10
-    %12:vec2<f32> = swizzle %11, yx
-    store %9, %12
-    %13:ptr<private, vec2<f32>, read_write> = access %p, 1i, 0i
-    %14:ptr<uniform, vec2<f32>, read> = access %u, 0i, 1i
-    %15:f32 = load_vector_element %14, 0u
-    store_vector_element %13, 0u, %15
-    %16:ptr<private, vec2<f32>, read_write> = access %p, 1i, 0i
-    %17:f32 = load_vector_element %16, 0u
-    store %s, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 79aeaaa..917712a 100644
--- 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
@@ -1,35 +1,26 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+struct tint_module_vars_struct {
+  const constant tint_array<float4x2, 4>* u;
+  device tint_array<float4x2, 4>* s;
+};
+
+kernel void f(const constant tint_array<float4x2, 4>* u [[buffer(0)]], device tint_array<float4x2, 4>* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].yx;
+  (*tint_module_vars.s)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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/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
index e41f63c..6856843 100644
--- 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
@@ -1,51 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat4x3<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-  %counter:ptr<private, i32, read_write> = var, 0i
-}
+struct tint_module_vars_struct {
+  const constant tint_array<half4x3, 4>* a;
+  device half* s;
+  thread int* counter;
+};
 
-%i = func():i32 {
-  $B2: {
-    %5:i32 = load %counter
-    %6:i32 = add %5, 1i
-    store %counter, %6
-    %7:i32 = load %counter
-    ret %7
-  }
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_a:ptr<uniform, array<mat4x3<f16>, 4>, read> = let %a
-    %10:i32 = call %i
-    %11:ptr<uniform, mat4x3<f16>, read> = access %p_a, %10
-    %p_a_i:ptr<uniform, mat4x3<f16>, read> = let %11
-    %13:i32 = call %i
-    %14:ptr<uniform, vec3<f16>, read> = access %p_a_i, %13
-    %p_a_i_i:ptr<uniform, vec3<f16>, read> = let %14
-    %16:array<mat4x3<f16>, 4> = load %p_a
-    %l_a:array<mat4x3<f16>, 4> = let %16
-    %18:mat4x3<f16> = load %p_a_i
-    %l_a_i:mat4x3<f16> = let %18
-    %20:vec3<f16> = load %p_a_i_i
-    %l_a_i_i:vec3<f16> = let %20
-    %22:f16 = load_vector_element %p_a_i_i, 0u
-    %23:f16 = access %l_a, 0i, 0i, 0u
-    %24:f16 = add %22, %23
-    %25:f16 = access %l_a_i, 0i, 0u
-    %26:f16 = add %24, %25
-    %27:f16 = access %l_a_i_i, 0u
-    %28:f16 = add %26, %27
-    store %s, %28
-    ret
-  }
+kernel void f(const constant tint_array<half4x3, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  const constant tint_array<half4x3, 4>* const p_a = tint_module_vars.a;
+  const constant half4x3* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant half3* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
+  tint_array<half4x3, 4> const l_a = (*p_a);
+  half4x3 const l_a_i = (*p_a_i);
+  half3 const l_a_i_i = (*p_a_i_i);
+  (*tint_module_vars.s) = ((((*p_a_i_i)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 775594a..c5316d9 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat4x3<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
+struct tint_module_vars_struct {
+  const constant tint_array<half4x3, 4>* a;
+  device half* s;
+};
+
+kernel void f(const constant tint_array<half4x3, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  const constant tint_array<half4x3, 4>* const p_a = tint_module_vars.a;
+  const constant half4x3* const p_a_2 = (&(*p_a)[2]);
+  const constant half3* const p_a_2_1 = (&(*p_a_2)[1]);
+  tint_array<half4x3, 4> const l_a = (*p_a);
+  half4x3 const l_a_i = (*p_a_2);
+  half3 const l_a_i_i = (*p_a_2_1);
+  (*tint_module_vars.s) = ((((*p_a_2_1)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<mat4x3<f16>, 4>, read> = let %a
-    %5:ptr<uniform, mat4x3<f16>, read> = access %p_a, 2i
-    %p_a_2:ptr<uniform, mat4x3<f16>, read> = let %5
-    %7:ptr<uniform, vec3<f16>, read> = access %p_a_2, 1i
-    %p_a_2_1:ptr<uniform, vec3<f16>, read> = let %7
-    %9:array<mat4x3<f16>, 4> = load %p_a
-    %l_a:array<mat4x3<f16>, 4> = let %9
-    %11:mat4x3<f16> = load %p_a_2
-    %l_a_i:mat4x3<f16> = let %11
-    %13:vec3<f16> = load %p_a_2_1
-    %l_a_i_i:vec3<f16> = let %13
-    %15:f16 = load_vector_element %p_a_2_1, 0u
-    %16:f16 = access %l_a, 0i, 0i, 0u
-    %17:f16 = add %15, %16
-    %18:f16 = access %l_a_i, 0i, 0u
-    %19:f16 = add %17, %18
-    %20:f16 = access %l_a_i_i, 0u
-    %21:f16 = add %19, %20
-    store %s, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 808d172..195f28a 100644
--- 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
@@ -1,64 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat4x3<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<half4x3, 4>* u;
+  device half* s;
+};
 
-%a = func(%a_1:array<mat4x3<f16>, 4>):f16 {  # %a_1: 'a'
-  $B2: {
-    %5:f16 = access %a_1, 0i, 0i, 0u
-    ret %5
-  }
+half a(tint_array<half4x3, 4> a) {
+  return a[0][0][0u];
 }
-%b = func(%m:mat4x3<f16>):f16 {
-  $B3: {
-    %8:f16 = access %m, 0i, 0u
-    ret %8
-  }
+half b(half4x3 m) {
+  return m[0][0u];
 }
-%c = func(%v:vec3<f16>):f16 {
-  $B4: {
-    %11:f16 = access %v, 0u
-    ret %11
-  }
+half c(half3 v) {
+  return v[0u];
 }
-%d = func(%f:f16):f16 {
-  $B5: {
-    ret %f
-  }
+half d(half f) {
+  return f;
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B6: {
-    %15:array<mat4x3<f16>, 4> = load %u
-    %16:f16 = call %a, %15
-    %17:f16 = let %16
-    %18:ptr<uniform, mat4x3<f16>, read> = access %u, 1i
-    %19:mat4x3<f16> = load %18
-    %20:f16 = call %b, %19
-    %21:f16 = add %17, %20
-    %22:f16 = let %21
-    %23:ptr<uniform, vec3<f16>, read> = access %u, 1i, 0i
-    %24:vec3<f16> = load %23
-    %25:vec3<f16> = swizzle %24, zxy
-    %26:f16 = call %c, %25
-    %27:f16 = add %22, %26
-    %28:f16 = let %27
-    %29:ptr<uniform, vec3<f16>, read> = access %u, 1i, 0i
-    %30:vec3<f16> = load %29
-    %31:vec3<f16> = swizzle %30, zxy
-    %32:f16 = access %31, 0u
-    %33:f16 = call %d, %32
-    %34:f16 = add %28, %33
-    store %s, %34
-    ret
-  }
+kernel void f(const constant tint_array<half4x3, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half const v_1 = a((*tint_module_vars.u));
+  half const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
+  half const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].zxy));
+  (*tint_module_vars.s) = (v_3 + d((*tint_module_vars.u)[1][0].zxy[0u]));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index bfcb672..6f079fe 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat4x3<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-  %p:ptr<private, array<mat4x3<f16>, 4>, read_write> = var
+struct tint_module_vars_struct {
+  const constant tint_array<half4x3, 4>* u;
+  device half* s;
+  thread tint_array<half4x3, 4>* p;
+};
+
+kernel void f(const constant tint_array<half4x3, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
+  thread tint_array<half4x3, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].zxy;
+  (*tint_module_vars.p)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
+  (*tint_module_vars.s) = (*tint_module_vars.p)[1][0][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:array<mat4x3<f16>, 4> = load %u
-    store %p, %5
-    %6:ptr<private, mat4x3<f16>, read_write> = access %p, 1i
-    %7:ptr<uniform, mat4x3<f16>, read> = access %u, 2i
-    %8:mat4x3<f16> = load %7
-    store %6, %8
-    %9:ptr<private, vec3<f16>, read_write> = access %p, 1i, 0i
-    %10:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
-    %11:vec3<f16> = load %10
-    %12:vec3<f16> = swizzle %11, zxy
-    store %9, %12
-    %13:ptr<private, vec3<f16>, read_write> = access %p, 1i, 0i
-    %14:ptr<uniform, vec3<f16>, read> = access %u, 0i, 1i
-    %15:f16 = load_vector_element %14, 0u
-    store_vector_element %13, 0u, %15
-    %16:ptr<private, vec3<f16>, read_write> = access %p, 1i, 0i
-    %17:f16 = load_vector_element %16, 0u
-    store %s, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index dd508be..59ab336 100644
--- 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
@@ -1,51 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat4x3<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %counter:ptr<private, i32, read_write> = var, 0i
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float4x3, 4>* a;
+  device float* s;
+  thread int* counter;
+};
 
-%i = func():i32 {
-  $B2: {
-    %5:i32 = load %counter
-    %6:i32 = add %5, 1i
-    store %counter, %6
-    %7:i32 = load %counter
-    ret %7
-  }
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_a:ptr<uniform, array<mat4x3<f32>, 4>, read> = let %a
-    %10:i32 = call %i
-    %11:ptr<uniform, mat4x3<f32>, read> = access %p_a, %10
-    %p_a_i:ptr<uniform, mat4x3<f32>, read> = let %11
-    %13:i32 = call %i
-    %14:ptr<uniform, vec3<f32>, read> = access %p_a_i, %13
-    %p_a_i_i:ptr<uniform, vec3<f32>, read> = let %14
-    %16:array<mat4x3<f32>, 4> = load %p_a
-    %l_a:array<mat4x3<f32>, 4> = let %16
-    %18:mat4x3<f32> = load %p_a_i
-    %l_a_i:mat4x3<f32> = let %18
-    %20:vec3<f32> = load %p_a_i_i
-    %l_a_i_i:vec3<f32> = let %20
-    %22:f32 = load_vector_element %p_a_i_i, 0u
-    %23:f32 = access %l_a, 0i, 0i, 0u
-    %24:f32 = add %22, %23
-    %25:f32 = access %l_a_i, 0i, 0u
-    %26:f32 = add %24, %25
-    %27:f32 = access %l_a_i_i, 0u
-    %28:f32 = add %26, %27
-    store %s, %28
-    ret
-  }
+kernel void f(const constant tint_array<float4x3, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  const constant tint_array<float4x3, 4>* const p_a = tint_module_vars.a;
+  const constant float4x3* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant float3* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
+  tint_array<float4x3, 4> const l_a = (*p_a);
+  float4x3 const l_a_i = (*p_a_i);
+  float3 const l_a_i_i = (*p_a_i_i);
+  (*tint_module_vars.s) = ((((*p_a_i_i)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 3bb2007..e0a1c24 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat4x3<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+struct tint_module_vars_struct {
+  const constant tint_array<float4x3, 4>* a;
+  device float* s;
+};
+
+kernel void f(const constant tint_array<float4x3, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  const constant tint_array<float4x3, 4>* const p_a = tint_module_vars.a;
+  const constant float4x3* const p_a_2 = (&(*p_a)[2]);
+  const constant float3* const p_a_2_1 = (&(*p_a_2)[1]);
+  tint_array<float4x3, 4> const l_a = (*p_a);
+  float4x3 const l_a_i = (*p_a_2);
+  float3 const l_a_i_i = (*p_a_2_1);
+  (*tint_module_vars.s) = ((((*p_a_2_1)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<mat4x3<f32>, 4>, read> = let %a
-    %5:ptr<uniform, mat4x3<f32>, read> = access %p_a, 2i
-    %p_a_2:ptr<uniform, mat4x3<f32>, read> = let %5
-    %7:ptr<uniform, vec3<f32>, read> = access %p_a_2, 1i
-    %p_a_2_1:ptr<uniform, vec3<f32>, read> = let %7
-    %9:array<mat4x3<f32>, 4> = load %p_a
-    %l_a:array<mat4x3<f32>, 4> = let %9
-    %11:mat4x3<f32> = load %p_a_2
-    %l_a_i:mat4x3<f32> = let %11
-    %13:vec3<f32> = load %p_a_2_1
-    %l_a_i_i:vec3<f32> = let %13
-    %15:f32 = load_vector_element %p_a_2_1, 0u
-    %16:f32 = access %l_a, 0i, 0i, 0u
-    %17:f32 = add %15, %16
-    %18:f32 = access %l_a_i, 0i, 0u
-    %19:f32 = add %17, %18
-    %20:f32 = access %l_a_i_i, 0u
-    %21:f32 = add %19, %20
-    store %s, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 1d68a3c..7f13ac2f 100644
--- 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
@@ -1,64 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat4x3<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float4x3, 4>* u;
+  device float* s;
+};
 
-%a = func(%a_1:array<mat4x3<f32>, 4>):f32 {  # %a_1: 'a'
-  $B2: {
-    %5:f32 = access %a_1, 0i, 0i, 0u
-    ret %5
-  }
+float a(tint_array<float4x3, 4> a) {
+  return a[0][0][0u];
 }
-%b = func(%m:mat4x3<f32>):f32 {
-  $B3: {
-    %8:f32 = access %m, 0i, 0u
-    ret %8
-  }
+float b(float4x3 m) {
+  return m[0][0u];
 }
-%c = func(%v:vec3<f32>):f32 {
-  $B4: {
-    %11:f32 = access %v, 0u
-    ret %11
-  }
+float c(float3 v) {
+  return v[0u];
 }
-%d = func(%f:f32):f32 {
-  $B5: {
-    ret %f
-  }
+float d(float f) {
+  return f;
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B6: {
-    %15:array<mat4x3<f32>, 4> = load %u
-    %16:f32 = call %a, %15
-    %17:f32 = let %16
-    %18:ptr<uniform, mat4x3<f32>, read> = access %u, 1i
-    %19:mat4x3<f32> = load %18
-    %20:f32 = call %b, %19
-    %21:f32 = add %17, %20
-    %22:f32 = let %21
-    %23:ptr<uniform, vec3<f32>, read> = access %u, 1i, 0i
-    %24:vec3<f32> = load %23
-    %25:vec3<f32> = swizzle %24, zxy
-    %26:f32 = call %c, %25
-    %27:f32 = add %22, %26
-    %28:f32 = let %27
-    %29:ptr<uniform, vec3<f32>, read> = access %u, 1i, 0i
-    %30:vec3<f32> = load %29
-    %31:vec3<f32> = swizzle %30, zxy
-    %32:f32 = access %31, 0u
-    %33:f32 = call %d, %32
-    %34:f32 = add %28, %33
-    store %s, %34
-    ret
-  }
+kernel void f(const constant tint_array<float4x3, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float const v_1 = a((*tint_module_vars.u));
+  float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
+  float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].zxy));
+  (*tint_module_vars.s) = (v_3 + d((*tint_module_vars.u)[1][0].zxy[0u]));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 1fda10a..847112b 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat4x3<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %p:ptr<private, array<mat4x3<f32>, 4>, read_write> = var
+struct tint_module_vars_struct {
+  const constant tint_array<float4x3, 4>* u;
+  device float* s;
+  thread tint_array<float4x3, 4>* p;
+};
+
+kernel void f(const constant tint_array<float4x3, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread tint_array<float4x3, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].zxy;
+  (*tint_module_vars.p)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
+  (*tint_module_vars.s) = (*tint_module_vars.p)[1][0][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:array<mat4x3<f32>, 4> = load %u
-    store %p, %5
-    %6:ptr<private, mat4x3<f32>, read_write> = access %p, 1i
-    %7:ptr<uniform, mat4x3<f32>, read> = access %u, 2i
-    %8:mat4x3<f32> = load %7
-    store %6, %8
-    %9:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
-    %10:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
-    %11:vec3<f32> = load %10
-    %12:vec3<f32> = swizzle %11, zxy
-    store %9, %12
-    %13:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
-    %14:ptr<uniform, vec3<f32>, read> = access %u, 0i, 1i
-    %15:f32 = load_vector_element %14, 0u
-    store_vector_element %13, 0u, %15
-    %16:ptr<private, vec3<f32>, read_write> = access %p, 1i, 0i
-    %17:f32 = load_vector_element %16, 0u
-    store %s, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 863554e..5fe3f57 100644
--- 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
@@ -1,51 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat4x4<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-  %counter:ptr<private, i32, read_write> = var, 0i
-}
+struct tint_module_vars_struct {
+  const constant tint_array<half4x4, 4>* a;
+  device half* s;
+  thread int* counter;
+};
 
-%i = func():i32 {
-  $B2: {
-    %5:i32 = load %counter
-    %6:i32 = add %5, 1i
-    store %counter, %6
-    %7:i32 = load %counter
-    ret %7
-  }
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_a:ptr<uniform, array<mat4x4<f16>, 4>, read> = let %a
-    %10:i32 = call %i
-    %11:ptr<uniform, mat4x4<f16>, read> = access %p_a, %10
-    %p_a_i:ptr<uniform, mat4x4<f16>, read> = let %11
-    %13:i32 = call %i
-    %14:ptr<uniform, vec4<f16>, read> = access %p_a_i, %13
-    %p_a_i_i:ptr<uniform, vec4<f16>, read> = let %14
-    %16:array<mat4x4<f16>, 4> = load %p_a
-    %l_a:array<mat4x4<f16>, 4> = let %16
-    %18:mat4x4<f16> = load %p_a_i
-    %l_a_i:mat4x4<f16> = let %18
-    %20:vec4<f16> = load %p_a_i_i
-    %l_a_i_i:vec4<f16> = let %20
-    %22:f16 = load_vector_element %p_a_i_i, 0u
-    %23:f16 = access %l_a, 0i, 0i, 0u
-    %24:f16 = add %22, %23
-    %25:f16 = access %l_a_i, 0i, 0u
-    %26:f16 = add %24, %25
-    %27:f16 = access %l_a_i_i, 0u
-    %28:f16 = add %26, %27
-    store %s, %28
-    ret
-  }
+kernel void f(const constant tint_array<half4x4, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  const constant tint_array<half4x4, 4>* const p_a = tint_module_vars.a;
+  const constant half4x4* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant half4* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
+  tint_array<half4x4, 4> const l_a = (*p_a);
+  half4x4 const l_a_i = (*p_a_i);
+  half4 const l_a_i_i = (*p_a_i_i);
+  (*tint_module_vars.s) = ((((*p_a_i_i)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 19984e1..9ddf2fd 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat4x4<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
+struct tint_module_vars_struct {
+  const constant tint_array<half4x4, 4>* a;
+  device half* s;
+};
+
+kernel void f(const constant tint_array<half4x4, 4>* a [[buffer(0)]], device half* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  const constant tint_array<half4x4, 4>* const p_a = tint_module_vars.a;
+  const constant half4x4* const p_a_2 = (&(*p_a)[2]);
+  const constant half4* const p_a_2_1 = (&(*p_a_2)[1]);
+  tint_array<half4x4, 4> const l_a = (*p_a);
+  half4x4 const l_a_i = (*p_a_2);
+  half4 const l_a_i_i = (*p_a_2_1);
+  (*tint_module_vars.s) = ((((*p_a_2_1)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<mat4x4<f16>, 4>, read> = let %a
-    %5:ptr<uniform, mat4x4<f16>, read> = access %p_a, 2i
-    %p_a_2:ptr<uniform, mat4x4<f16>, read> = let %5
-    %7:ptr<uniform, vec4<f16>, read> = access %p_a_2, 1i
-    %p_a_2_1:ptr<uniform, vec4<f16>, read> = let %7
-    %9:array<mat4x4<f16>, 4> = load %p_a
-    %l_a:array<mat4x4<f16>, 4> = let %9
-    %11:mat4x4<f16> = load %p_a_2
-    %l_a_i:mat4x4<f16> = let %11
-    %13:vec4<f16> = load %p_a_2_1
-    %l_a_i_i:vec4<f16> = let %13
-    %15:f16 = load_vector_element %p_a_2_1, 0u
-    %16:f16 = access %l_a, 0i, 0i, 0u
-    %17:f16 = add %15, %16
-    %18:f16 = access %l_a_i, 0i, 0u
-    %19:f16 = add %17, %18
-    %20:f16 = access %l_a_i_i, 0u
-    %21:f16 = add %19, %20
-    store %s, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index bb5be48..fc71381 100644
--- 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
@@ -1,64 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat4x4<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<half4x4, 4>* u;
+  device half* s;
+};
 
-%a = func(%a_1:array<mat4x4<f16>, 4>):f16 {  # %a_1: 'a'
-  $B2: {
-    %5:f16 = access %a_1, 0i, 0i, 0u
-    ret %5
-  }
+half a(tint_array<half4x4, 4> a) {
+  return a[0][0][0u];
 }
-%b = func(%m:mat4x4<f16>):f16 {
-  $B3: {
-    %8:f16 = access %m, 0i, 0u
-    ret %8
-  }
+half b(half4x4 m) {
+  return m[0][0u];
 }
-%c = func(%v:vec4<f16>):f16 {
-  $B4: {
-    %11:f16 = access %v, 0u
-    ret %11
-  }
+half c(half4 v) {
+  return v[0u];
 }
-%d = func(%f:f16):f16 {
-  $B5: {
-    ret %f
-  }
+half d(half f) {
+  return f;
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B6: {
-    %15:array<mat4x4<f16>, 4> = load %u
-    %16:f16 = call %a, %15
-    %17:f16 = let %16
-    %18:ptr<uniform, mat4x4<f16>, read> = access %u, 1i
-    %19:mat4x4<f16> = load %18
-    %20:f16 = call %b, %19
-    %21:f16 = add %17, %20
-    %22:f16 = let %21
-    %23:ptr<uniform, vec4<f16>, read> = access %u, 1i, 0i
-    %24:vec4<f16> = load %23
-    %25:vec4<f16> = swizzle %24, ywxz
-    %26:f16 = call %c, %25
-    %27:f16 = add %22, %26
-    %28:f16 = let %27
-    %29:ptr<uniform, vec4<f16>, read> = access %u, 1i, 0i
-    %30:vec4<f16> = load %29
-    %31:vec4<f16> = swizzle %30, ywxz
-    %32:f16 = access %31, 0u
-    %33:f16 = call %d, %32
-    %34:f16 = add %28, %33
-    store %s, %34
-    ret
-  }
+kernel void f(const constant tint_array<half4x4, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half const v_1 = a((*tint_module_vars.u));
+  half const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
+  half const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].ywxz));
+  (*tint_module_vars.s) = (v_3 + d((*tint_module_vars.u)[1][0].ywxz[0u]));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 7673f73..59f6a82 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat4x4<f16>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
-  %p:ptr<private, array<mat4x4<f16>, 4>, read_write> = var
+struct tint_module_vars_struct {
+  const constant tint_array<half4x4, 4>* u;
+  device half* s;
+  thread tint_array<half4x4, 4>* p;
+};
+
+kernel void f(const constant tint_array<half4x4, 4>* u [[buffer(0)]], device half* s [[buffer(1)]]) {
+  thread tint_array<half4x4, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
+  (*tint_module_vars.p)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
+  (*tint_module_vars.s) = (*tint_module_vars.p)[1][0][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:array<mat4x4<f16>, 4> = load %u
-    store %p, %5
-    %6:ptr<private, mat4x4<f16>, read_write> = access %p, 1i
-    %7:ptr<uniform, mat4x4<f16>, read> = access %u, 2i
-    %8:mat4x4<f16> = load %7
-    store %6, %8
-    %9:ptr<private, vec4<f16>, read_write> = access %p, 1i, 0i
-    %10:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
-    %11:vec4<f16> = load %10
-    %12:vec4<f16> = swizzle %11, ywxz
-    store %9, %12
-    %13:ptr<private, vec4<f16>, read_write> = access %p, 1i, 0i
-    %14:ptr<uniform, vec4<f16>, read> = access %u, 0i, 1i
-    %15:f16 = load_vector_element %14, 0u
-    store_vector_element %13, 0u, %15
-    %16:ptr<private, vec4<f16>, read_write> = access %p, 1i, 0i
-    %17:f16 = load_vector_element %16, 0u
-    store %s, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 7b01bcc..61051b4 100644
--- 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
@@ -1,35 +1,26 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+struct tint_module_vars_struct {
+  const constant tint_array<half4x4, 4>* u;
+  device tint_array<half4x4, 4>* s;
+};
+
+kernel void f(const constant tint_array<half4x4, 4>* u [[buffer(0)]], device tint_array<half4x4, 4>* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
+  (*tint_module_vars.s)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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_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
index 336fdbe..f507fba 100644
--- 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
@@ -1,51 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat4x4<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %counter:ptr<private, i32, read_write> = var, 0i
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float4x4, 4>* a;
+  device float* s;
+  thread int* counter;
+};
 
-%i = func():i32 {
-  $B2: {
-    %5:i32 = load %counter
-    %6:i32 = add %5, 1i
-    store %counter, %6
-    %7:i32 = load %counter
-    ret %7
-  }
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_a:ptr<uniform, array<mat4x4<f32>, 4>, read> = let %a
-    %10:i32 = call %i
-    %11:ptr<uniform, mat4x4<f32>, read> = access %p_a, %10
-    %p_a_i:ptr<uniform, mat4x4<f32>, read> = let %11
-    %13:i32 = call %i
-    %14:ptr<uniform, vec4<f32>, read> = access %p_a_i, %13
-    %p_a_i_i:ptr<uniform, vec4<f32>, read> = let %14
-    %16:array<mat4x4<f32>, 4> = load %p_a
-    %l_a:array<mat4x4<f32>, 4> = let %16
-    %18:mat4x4<f32> = load %p_a_i
-    %l_a_i:mat4x4<f32> = let %18
-    %20:vec4<f32> = load %p_a_i_i
-    %l_a_i_i:vec4<f32> = let %20
-    %22:f32 = load_vector_element %p_a_i_i, 0u
-    %23:f32 = access %l_a, 0i, 0i, 0u
-    %24:f32 = add %22, %23
-    %25:f32 = access %l_a_i, 0i, 0u
-    %26:f32 = add %24, %25
-    %27:f32 = access %l_a_i_i, 0u
-    %28:f32 = add %26, %27
-    store %s, %28
-    ret
-  }
+kernel void f(const constant tint_array<float4x4, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s, .counter=(&counter)};
+  const constant tint_array<float4x4, 4>* const p_a = tint_module_vars.a;
+  const constant float4x4* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant float4* const p_a_i_i = (&(*p_a_i)[i(tint_module_vars)]);
+  tint_array<float4x4, 4> const l_a = (*p_a);
+  float4x4 const l_a_i = (*p_a_i);
+  float4 const l_a_i_i = (*p_a_i_i);
+  (*tint_module_vars.s) = ((((*p_a_i_i)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 3a2d273..c1e9f20 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<uniform, array<mat4x4<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+struct tint_module_vars_struct {
+  const constant tint_array<float4x4, 4>* a;
+  device float* s;
+};
+
+kernel void f(const constant tint_array<float4x4, 4>* a [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a, .s=s};
+  const constant tint_array<float4x4, 4>* const p_a = tint_module_vars.a;
+  const constant float4x4* const p_a_2 = (&(*p_a)[2]);
+  const constant float4* const p_a_2_1 = (&(*p_a_2)[1]);
+  tint_array<float4x4, 4> const l_a = (*p_a);
+  float4x4 const l_a_i = (*p_a_2);
+  float4 const l_a_i_i = (*p_a_2_1);
+  (*tint_module_vars.s) = ((((*p_a_2_1)[0u] + l_a[0][0][0u]) + l_a_i[0][0u]) + l_a_i_i[0u]);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<mat4x4<f32>, 4>, read> = let %a
-    %5:ptr<uniform, mat4x4<f32>, read> = access %p_a, 2i
-    %p_a_2:ptr<uniform, mat4x4<f32>, read> = let %5
-    %7:ptr<uniform, vec4<f32>, read> = access %p_a_2, 1i
-    %p_a_2_1:ptr<uniform, vec4<f32>, read> = let %7
-    %9:array<mat4x4<f32>, 4> = load %p_a
-    %l_a:array<mat4x4<f32>, 4> = let %9
-    %11:mat4x4<f32> = load %p_a_2
-    %l_a_i:mat4x4<f32> = let %11
-    %13:vec4<f32> = load %p_a_2_1
-    %l_a_i_i:vec4<f32> = let %13
-    %15:f32 = load_vector_element %p_a_2_1, 0u
-    %16:f32 = access %l_a, 0i, 0i, 0u
-    %17:f32 = add %15, %16
-    %18:f32 = access %l_a_i, 0i, 0u
-    %19:f32 = add %17, %18
-    %20:f32 = access %l_a_i_i, 0u
-    %21:f32 = add %19, %20
-    store %s, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index a8f60db..6ca01b6 100644
--- 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
@@ -1,64 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat4x4<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<float4x4, 4>* u;
+  device float* s;
+};
 
-%a = func(%a_1:array<mat4x4<f32>, 4>):f32 {  # %a_1: 'a'
-  $B2: {
-    %5:f32 = access %a_1, 0i, 0i, 0u
-    ret %5
-  }
+float a(tint_array<float4x4, 4> a) {
+  return a[0][0][0u];
 }
-%b = func(%m:mat4x4<f32>):f32 {
-  $B3: {
-    %8:f32 = access %m, 0i, 0u
-    ret %8
-  }
+float b(float4x4 m) {
+  return m[0][0u];
 }
-%c = func(%v:vec4<f32>):f32 {
-  $B4: {
-    %11:f32 = access %v, 0u
-    ret %11
-  }
+float c(float4 v) {
+  return v[0u];
 }
-%d = func(%f:f32):f32 {
-  $B5: {
-    ret %f
-  }
+float d(float f) {
+  return f;
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B6: {
-    %15:array<mat4x4<f32>, 4> = load %u
-    %16:f32 = call %a, %15
-    %17:f32 = let %16
-    %18:ptr<uniform, mat4x4<f32>, read> = access %u, 1i
-    %19:mat4x4<f32> = load %18
-    %20:f32 = call %b, %19
-    %21:f32 = add %17, %20
-    %22:f32 = let %21
-    %23:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
-    %24:vec4<f32> = load %23
-    %25:vec4<f32> = swizzle %24, ywxz
-    %26:f32 = call %c, %25
-    %27:f32 = add %22, %26
-    %28:f32 = let %27
-    %29:ptr<uniform, vec4<f32>, read> = access %u, 1i, 0i
-    %30:vec4<f32> = load %29
-    %31:vec4<f32> = swizzle %30, ywxz
-    %32:f32 = access %31, 0u
-    %33:f32 = call %d, %32
-    %34:f32 = add %28, %33
-    store %s, %34
-    ret
-  }
+kernel void f(const constant tint_array<float4x4, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float const v_1 = a((*tint_module_vars.u));
+  float const v_2 = (v_1 + b((*tint_module_vars.u)[1]));
+  float const v_3 = (v_2 + c((*tint_module_vars.u)[1][0].ywxz));
+  (*tint_module_vars.s) = (v_3 + d((*tint_module_vars.u)[1][0].ywxz[0u]));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 9a95827..47e38ef 100644
--- 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
@@ -1,39 +1,29 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, array<mat4x4<f32>, 4>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
-  %p:ptr<private, array<mat4x4<f32>, 4>, read_write> = var
+struct tint_module_vars_struct {
+  const constant tint_array<float4x4, 4>* u;
+  device float* s;
+  thread tint_array<float4x4, 4>* p;
+};
+
+kernel void f(const constant tint_array<float4x4, 4>* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  thread tint_array<float4x4, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
+  (*tint_module_vars.p)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
+  (*tint_module_vars.s) = (*tint_module_vars.p)[1][0][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:array<mat4x4<f32>, 4> = load %u
-    store %p, %5
-    %6:ptr<private, mat4x4<f32>, read_write> = access %p, 1i
-    %7:ptr<uniform, mat4x4<f32>, read> = access %u, 2i
-    %8:mat4x4<f32> = load %7
-    store %6, %8
-    %9:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
-    %10:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
-    %11:vec4<f32> = load %10
-    %12:vec4<f32> = swizzle %11, ywxz
-    store %9, %12
-    %13:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
-    %14:ptr<uniform, vec4<f32>, read> = access %u, 0i, 1i
-    %15:f32 = load_vector_element %14, 0u
-    store_vector_element %13, 0u, %15
-    %16:ptr<private, vec4<f32>, read_write> = access %p, 1i, 0i
-    %17:f32 = load_vector_element %16, 0u
-    store %s, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 0aefcc3..4b3a5f6 100644
--- 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
@@ -1,35 +1,26 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+struct tint_module_vars_struct {
+  const constant tint_array<float4x4, 4>* u;
+  device tint_array<float4x4, 4>* s;
+};
+
+kernel void f(const constant tint_array<float4x4, 4>* u [[buffer(0)]], device tint_array<float4x4, 4>* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.s)[1][0] = (*tint_module_vars.u)[0][1].ywxz;
+  (*tint_module_vars.s)[1][0][0u] = (*tint_module_vars.u)[0][1][0u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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/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
index eb2f4f7..ad04662 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(4) {
-  m:mat2x2<f16> @offset(0)
-}
+struct Inner {
+  half2x2 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(4) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant half2x2* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant half2* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  half2x2 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  half2 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  half const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat2x2<f16>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat2x2<f16>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec2<f16>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec2<f16>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat2x2<f16> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat2x2<f16> = let %30
-    %32:vec2<f16> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec2<f16> = let %32
-    %34:i32 = call %i
-    %35:f16 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f16 = let %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/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
index 6eb4d45..1970fa5 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(4) {
-  m:mat2x2<f16> @offset(0)
+struct Inner {
+  half2x2 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant half2x2* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant half2* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  half2x2 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  half2 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  half const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(4) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat2x2<f16>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat2x2<f16>, read> = let %10
-    %12:ptr<uniform, vec2<f16>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec2<f16>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat2x2<f16> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat2x2<f16> = let %22
-    %24:vec2<f16> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec2<f16> = let %24
-    %26:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f16 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 936106d..0c6f2ef 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat2x2<f16> @offset(4)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  half2x2 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(half2x2 m) {
 }
-%c = func(%m:mat2x2<f16>):void {
-  $B4: {
-    ret
-  }
+void d(half2 v) {
 }
-%d = func(%v:vec2<f16>):void {
-  $B5: {
-    ret
-  }
+void e(half f) {
 }
-%e = func(%f:f16):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].yx);
+  e((*tint_module_vars.u)[0].m[1].yx[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index d4123cf..420cc47 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat2x2<f16> @offset(4)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  half2x2 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].yx;
 }
-
-$B1: {  # 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: {
-    %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_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
index 4132c7f..fad5c3b 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat2x2<f32> @offset(0)
-}
+struct Inner {
+  float2x2 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant float2x2* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant float2* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  float2x2 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  float2 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  float const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat2x2<f32>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat2x2<f32>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec2<f32>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec2<f32>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat2x2<f32> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat2x2<f32> = let %30
-    %32:vec2<f32> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec2<f32> = let %32
-    %34:i32 = call %i
-    %35:f32 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f32 = let %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/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
index 43df577..1c3c2c3 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat2x2<f32> @offset(0)
+struct Inner {
+  float2x2 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant float2x2* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant float2* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  float2x2 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  float2 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  float const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat2x2<f32>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat2x2<f32>, read> = let %10
-    %12:ptr<uniform, vec2<f32>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec2<f32>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat2x2<f32> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat2x2<f32> = let %22
-    %24:vec2<f32> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec2<f32> = let %24
-    %26:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f32 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 2bec96d..7d22fe3 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat2x2<f32> @offset(8)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  float2x2 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(float2x2 m) {
 }
-%c = func(%m:mat2x2<f32>):void {
-  $B4: {
-    ret
-  }
+void d(float2 v) {
 }
-%d = func(%v:vec2<f32>):void {
-  $B5: {
-    ret
-  }
+void e(float f) {
 }
-%e = func(%f:f32):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].yx);
+  e((*tint_module_vars.u)[0].m[1].yx[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index 5ee7049..28c0c90 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat2x2<f32> @offset(8)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  float2x2 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].yx;
 }
-
-$B1: {  # 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: {
-    %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/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
index 985fb84..454aa71 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat2x3<f16> @offset(0)
-}
+struct Inner {
+  half2x3 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant half2x3* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant half3* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  half2x3 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  half3 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  half const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat2x3<f16>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat2x3<f16>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec3<f16>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec3<f16>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat2x3<f16> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat2x3<f16> = let %30
-    %32:vec3<f16> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec3<f16> = let %32
-    %34:i32 = call %i
-    %35:f16 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f16 = let %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/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
index c9c7e11..8d4e8cb 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat2x3<f16> @offset(0)
+struct Inner {
+  half2x3 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant half2x3* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant half3* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  half2x3 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  half3 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  half const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat2x3<f16>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat2x3<f16>, read> = let %10
-    %12:ptr<uniform, vec3<f16>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec3<f16>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat2x3<f16> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat2x3<f16> = let %22
-    %24:vec3<f16> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec3<f16> = let %24
-    %26:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f16 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index cf38c54..3fbff88 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat2x3<f16> @offset(8)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  half2x3 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(half2x3 m) {
 }
-%c = func(%m:mat2x3<f16>):void {
-  $B4: {
-    ret
-  }
+void d(half3 v) {
 }
-%d = func(%v:vec3<f16>):void {
-  $B5: {
-    ret
-  }
+void e(half f) {
 }
-%e = func(%f:f16):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].zxy);
+  e((*tint_module_vars.u)[0].m[1].zxy[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index 435e18b..85a6ad2 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat2x3<f16> @offset(8)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  half2x3 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].zxy;
 }
-
-$B1: {  # 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: {
-    %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_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
index ab28715..d93f367 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  m:mat2x3<f32> @offset(0)
-}
+struct Inner {
+  float2x3 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(16) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant float2x3* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant float3* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  float2x3 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  float3 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  float const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat2x3<f32>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat2x3<f32>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec3<f32>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec3<f32>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat2x3<f32> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat2x3<f32> = let %30
-    %32:vec3<f32> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec3<f32> = let %32
-    %34:i32 = call %i
-    %35:f32 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f32 = let %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/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
index 3847627..498987e 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  m:mat2x3<f32> @offset(0)
+struct Inner {
+  float2x3 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant float2x3* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant float3* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  float2x3 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  float3 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  float const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(16) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat2x3<f32>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat2x3<f32>, read> = let %10
-    %12:ptr<uniform, vec3<f32>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec3<f32>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat2x3<f32> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat2x3<f32> = let %22
-    %24:vec3<f32> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec3<f32> = let %24
-    %26:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f32 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index b9101bb..3c77ce1 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat2x3<f32> @offset(16)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  float2x3 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(float2x3 m) {
 }
-%c = func(%m:mat2x3<f32>):void {
-  $B4: {
-    ret
-  }
+void d(float3 v) {
 }
-%d = func(%v:vec3<f32>):void {
-  $B5: {
-    ret
-  }
+void e(float f) {
 }
-%e = func(%f:f32):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].zxy);
+  e((*tint_module_vars.u)[0].m[1].zxy[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index 76cf221..fad6151 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat2x3<f32> @offset(16)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  float2x3 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].zxy;
 }
-
-$B1: {  # 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: {
-    %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/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
index d758a15..bc93062 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat2x4<f16> @offset(0)
-}
+struct Inner {
+  half2x4 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant half2x4* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant half4* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  half2x4 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  half4 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  half const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat2x4<f16>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat2x4<f16>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec4<f16>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec4<f16>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat2x4<f16> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat2x4<f16> = let %30
-    %32:vec4<f16> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec4<f16> = let %32
-    %34:i32 = call %i
-    %35:f16 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f16 = let %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/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
index 77ca2ed..c41dbb3 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat2x4<f16> @offset(0)
+struct Inner {
+  half2x4 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant half2x4* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant half4* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  half2x4 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  half4 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  half const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat2x4<f16>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat2x4<f16>, read> = let %10
-    %12:ptr<uniform, vec4<f16>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec4<f16>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat2x4<f16> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat2x4<f16> = let %22
-    %24:vec4<f16> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec4<f16> = let %24
-    %26:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f16 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index f665915..d72a5a4 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat2x4<f16> @offset(8)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  half2x4 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(half2x4 m) {
 }
-%c = func(%m:mat2x4<f16>):void {
-  $B4: {
-    ret
-  }
+void d(half4 v) {
 }
-%d = func(%v:vec4<f16>):void {
-  $B5: {
-    ret
-  }
+void e(half f) {
 }
-%e = func(%f:f16):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].ywxz);
+  e((*tint_module_vars.u)[0].m[1].ywxz[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index 721519e..fc9a177 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat2x4<f16> @offset(8)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  half2x4 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].ywxz;
 }
-
-$B1: {  # 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: {
-    %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_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
index f342797..5680b16 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  m:mat2x4<f32> @offset(0)
-}
+struct Inner {
+  float2x4 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(16) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant float2x4* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant float4* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  float2x4 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  float4 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  float const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat2x4<f32>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat2x4<f32>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec4<f32>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec4<f32>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat2x4<f32> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat2x4<f32> = let %30
-    %32:vec4<f32> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec4<f32> = let %32
-    %34:i32 = call %i
-    %35:f32 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f32 = let %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/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
index 834d9f1..662374c 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  m:mat2x4<f32> @offset(0)
+struct Inner {
+  float2x4 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant float2x4* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant float4* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  float2x4 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  float4 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  float const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(16) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat2x4<f32>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat2x4<f32>, read> = let %10
-    %12:ptr<uniform, vec4<f32>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec4<f32>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat2x4<f32> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat2x4<f32> = let %22
-    %24:vec4<f32> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec4<f32> = let %24
-    %26:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f32 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 62e00c5..8294d15 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat2x4<f32> @offset(16)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  float2x4 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(float2x4 m) {
 }
-%c = func(%m:mat2x4<f32>):void {
-  $B4: {
-    ret
-  }
+void d(float4 v) {
 }
-%d = func(%v:vec4<f32>):void {
-  $B5: {
-    ret
-  }
+void e(float f) {
 }
-%e = func(%f:f32):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].ywxz);
+  e((*tint_module_vars.u)[0].m[1].ywxz[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index b590bca..4243cf8 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat2x4<f32> @offset(16)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  float2x4 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].ywxz;
 }
-
-$B1: {  # 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: {
-    %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/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
index 9cd196e..5c64921 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(4) {
-  m:mat3x2<f16> @offset(0)
-}
+struct Inner {
+  half3x2 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(4) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant half3x2* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant half2* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  half3x2 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  half2 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  half const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat3x2<f16>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat3x2<f16>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec2<f16>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec2<f16>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat3x2<f16> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat3x2<f16> = let %30
-    %32:vec2<f16> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec2<f16> = let %32
-    %34:i32 = call %i
-    %35:f16 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f16 = let %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/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
index 0f186d0..54240b6 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(4) {
-  m:mat3x2<f16> @offset(0)
+struct Inner {
+  half3x2 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant half3x2* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant half2* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  half3x2 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  half2 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  half const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(4) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat3x2<f16>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat3x2<f16>, read> = let %10
-    %12:ptr<uniform, vec2<f16>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec2<f16>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat3x2<f16> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat3x2<f16> = let %22
-    %24:vec2<f16> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec2<f16> = let %24
-    %26:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f16 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 71375f6..bf04a55 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat3x2<f16> @offset(4)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  half3x2 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(half3x2 m) {
 }
-%c = func(%m:mat3x2<f16>):void {
-  $B4: {
-    ret
-  }
+void d(half2 v) {
 }
-%d = func(%v:vec2<f16>):void {
-  $B5: {
-    ret
-  }
+void e(half f) {
 }
-%e = func(%f:f16):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].yx);
+  e((*tint_module_vars.u)[0].m[1].yx[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index 5f79e31..1232423 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat3x2<f16> @offset(4)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  half3x2 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].yx;
 }
-
-$B1: {  # 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: {
-    %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_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
index d191fe4..dfe6fbf 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat3x2<f32> @offset(0)
-}
+struct Inner {
+  float3x2 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant float3x2* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant float2* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  float3x2 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  float2 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  float const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat3x2<f32>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat3x2<f32>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec2<f32>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec2<f32>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat3x2<f32> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat3x2<f32> = let %30
-    %32:vec2<f32> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec2<f32> = let %32
-    %34:i32 = call %i
-    %35:f32 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f32 = let %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/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
index 1c32e7f..2ede16c 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat3x2<f32> @offset(0)
+struct Inner {
+  float3x2 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant float3x2* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant float2* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  float3x2 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  float2 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  float const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat3x2<f32>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat3x2<f32>, read> = let %10
-    %12:ptr<uniform, vec2<f32>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec2<f32>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat3x2<f32> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat3x2<f32> = let %22
-    %24:vec2<f32> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec2<f32> = let %24
-    %26:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f32 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index b797056..d7d9f54 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat3x2<f32> @offset(8)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  float3x2 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(float3x2 m) {
 }
-%c = func(%m:mat3x2<f32>):void {
-  $B4: {
-    ret
-  }
+void d(float2 v) {
 }
-%d = func(%v:vec2<f32>):void {
-  $B5: {
-    ret
-  }
+void e(float f) {
 }
-%e = func(%f:f32):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].yx);
+  e((*tint_module_vars.u)[0].m[1].yx[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index 273997c..6d86e13 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat3x2<f32> @offset(8)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  float3x2 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].yx;
 }
-
-$B1: {  # 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: {
-    %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/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
index b18f3d8..b2ac467 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat3x3<f16> @offset(0)
-}
+struct Inner {
+  half3x3 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant half3x3* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant half3* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  half3x3 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  half3 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  half const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat3x3<f16>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat3x3<f16>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec3<f16>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec3<f16>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat3x3<f16> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat3x3<f16> = let %30
-    %32:vec3<f16> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec3<f16> = let %32
-    %34:i32 = call %i
-    %35:f16 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f16 = let %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/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
index 99e3831..20dd259 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat3x3<f16> @offset(0)
+struct Inner {
+  half3x3 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant half3x3* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant half3* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  half3x3 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  half3 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  half const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat3x3<f16>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat3x3<f16>, read> = let %10
-    %12:ptr<uniform, vec3<f16>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec3<f16>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat3x3<f16> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat3x3<f16> = let %22
-    %24:vec3<f16> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec3<f16> = let %24
-    %26:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f16 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 1551dce..5a5fbe9 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat3x3<f16> @offset(8)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  half3x3 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(half3x3 m) {
 }
-%c = func(%m:mat3x3<f16>):void {
-  $B4: {
-    ret
-  }
+void d(half3 v) {
 }
-%d = func(%v:vec3<f16>):void {
-  $B5: {
-    ret
-  }
+void e(half f) {
 }
-%e = func(%f:f16):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].zxy);
+  e((*tint_module_vars.u)[0].m[1].zxy[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index 1542ca6..6dd2e33 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat3x3<f16> @offset(8)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  half3x3 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].zxy;
 }
-
-$B1: {  # 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: {
-    %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_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
index 7beeeda..7205444 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  m:mat3x3<f32> @offset(0)
-}
+struct Inner {
+  float3x3 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(16) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant float3x3* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant float3* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  float3x3 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  float3 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  float const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat3x3<f32>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat3x3<f32>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec3<f32>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec3<f32>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat3x3<f32> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat3x3<f32> = let %30
-    %32:vec3<f32> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec3<f32> = let %32
-    %34:i32 = call %i
-    %35:f32 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f32 = let %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/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
index 2e211af..8cc89bc 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  m:mat3x3<f32> @offset(0)
+struct Inner {
+  float3x3 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant float3x3* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant float3* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  float3x3 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  float3 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  float const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(16) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat3x3<f32>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat3x3<f32>, read> = let %10
-    %12:ptr<uniform, vec3<f32>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec3<f32>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat3x3<f32> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat3x3<f32> = let %22
-    %24:vec3<f32> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec3<f32> = let %24
-    %26:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f32 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 3775e04..8dae9f3 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat3x3<f32> @offset(16)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  float3x3 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(float3x3 m) {
 }
-%c = func(%m:mat3x3<f32>):void {
-  $B4: {
-    ret
-  }
+void d(float3 v) {
 }
-%d = func(%v:vec3<f32>):void {
-  $B5: {
-    ret
-  }
+void e(float f) {
 }
-%e = func(%f:f32):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].zxy);
+  e((*tint_module_vars.u)[0].m[1].zxy[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index eb254e6..4f87d7f 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat3x3<f32> @offset(16)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  float3x3 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].zxy;
 }
-
-$B1: {  # 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: {
-    %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/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
index 5da7b05..3cc7689 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat3x4<f16> @offset(0)
-}
+struct Inner {
+  half3x4 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant half3x4* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant half4* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  half3x4 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  half4 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  half const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat3x4<f16>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat3x4<f16>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec4<f16>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec4<f16>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat3x4<f16> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat3x4<f16> = let %30
-    %32:vec4<f16> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec4<f16> = let %32
-    %34:i32 = call %i
-    %35:f16 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f16 = let %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/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
index d80aecf..e621906 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat3x4<f16> @offset(0)
+struct Inner {
+  half3x4 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant half3x4* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant half4* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  half3x4 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  half4 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  half const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat3x4<f16>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat3x4<f16>, read> = let %10
-    %12:ptr<uniform, vec4<f16>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec4<f16>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat3x4<f16> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat3x4<f16> = let %22
-    %24:vec4<f16> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec4<f16> = let %24
-    %26:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f16 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index de62933..b3c0a10c 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat3x4<f16> @offset(8)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  half3x4 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(half3x4 m) {
 }
-%c = func(%m:mat3x4<f16>):void {
-  $B4: {
-    ret
-  }
+void d(half4 v) {
 }
-%d = func(%v:vec4<f16>):void {
-  $B5: {
-    ret
-  }
+void e(half f) {
 }
-%e = func(%f:f16):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].ywxz);
+  e((*tint_module_vars.u)[0].m[1].ywxz[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index a61c787..a52db6b 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat3x4<f16> @offset(8)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  half3x4 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].ywxz;
 }
-
-$B1: {  # 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: {
-    %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_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
index 7374cb3..eb95e46 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  m:mat3x4<f32> @offset(0)
-}
+struct Inner {
+  float3x4 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(16) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant float3x4* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant float4* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  float3x4 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  float4 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  float const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat3x4<f32>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat3x4<f32>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec4<f32>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec4<f32>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat3x4<f32> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat3x4<f32> = let %30
-    %32:vec4<f32> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec4<f32> = let %32
-    %34:i32 = call %i
-    %35:f32 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f32 = let %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/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
index a6aa20b..6abe3b0 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  m:mat3x4<f32> @offset(0)
+struct Inner {
+  float3x4 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant float3x4* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant float4* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  float3x4 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  float4 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  float const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(16) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat3x4<f32>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat3x4<f32>, read> = let %10
-    %12:ptr<uniform, vec4<f32>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec4<f32>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat3x4<f32> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat3x4<f32> = let %22
-    %24:vec4<f32> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec4<f32> = let %24
-    %26:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f32 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 9fc86f4..375b6b7 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat3x4<f32> @offset(16)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  float3x4 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(float3x4 m) {
 }
-%c = func(%m:mat3x4<f32>):void {
-  $B4: {
-    ret
-  }
+void d(float4 v) {
 }
-%d = func(%v:vec4<f32>):void {
-  $B5: {
-    ret
-  }
+void e(float f) {
 }
-%e = func(%f:f32):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].ywxz);
+  e((*tint_module_vars.u)[0].m[1].ywxz[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index 66213c0..c5d5e59 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat3x4<f32> @offset(16)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  float3x4 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].ywxz;
 }
-
-$B1: {  # 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: {
-    %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/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
index f7e6bdc..af99486 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(4) {
-  m:mat4x2<f16> @offset(0)
-}
+struct Inner {
+  half4x2 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(4) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant half4x2* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant half2* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  half4x2 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  half2 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  half const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat4x2<f16>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat4x2<f16>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec2<f16>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec2<f16>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat4x2<f16> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat4x2<f16> = let %30
-    %32:vec2<f16> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec2<f16> = let %32
-    %34:i32 = call %i
-    %35:f16 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f16 = let %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/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
index 5f0caca..fee4e98 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(4) {
-  m:mat4x2<f16> @offset(0)
+struct Inner {
+  half4x2 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant half4x2* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant half2* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  half4x2 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  half2 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  half const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(4) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat4x2<f16>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat4x2<f16>, read> = let %10
-    %12:ptr<uniform, vec2<f16>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec2<f16>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat4x2<f16> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat4x2<f16> = let %22
-    %24:vec2<f16> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec2<f16> = let %24
-    %26:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f16 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 2e0da2b..fec6911 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat4x2<f16> @offset(4)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  half4x2 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(half4x2 m) {
 }
-%c = func(%m:mat4x2<f16>):void {
-  $B4: {
-    ret
-  }
+void d(half2 v) {
 }
-%d = func(%v:vec2<f16>):void {
-  $B5: {
-    ret
-  }
+void e(half f) {
 }
-%e = func(%f:f16):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].yx);
+  e((*tint_module_vars.u)[0].m[1].yx[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index 4904ec9..3f7ad3d 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat4x2<f16> @offset(4)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  half4x2 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].yx;
 }
-
-$B1: {  # 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: {
-    %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_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
index 71450f5..8c058e1 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat4x2<f32> @offset(0)
-}
+struct Inner {
+  float4x2 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant float4x2* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant float2* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  float4x2 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  float2 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  float const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat4x2<f32>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat4x2<f32>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec2<f32>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec2<f32>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat4x2<f32> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat4x2<f32> = let %30
-    %32:vec2<f32> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec2<f32> = let %32
-    %34:i32 = call %i
-    %35:f32 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f32 = let %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/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
index 0795a77..d21986e 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat4x2<f32> @offset(0)
+struct Inner {
+  float4x2 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant float4x2* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant float2* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  float4x2 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  float2 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  float const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat4x2<f32>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat4x2<f32>, read> = let %10
-    %12:ptr<uniform, vec2<f32>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec2<f32>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat4x2<f32> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat4x2<f32> = let %22
-    %24:vec2<f32> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec2<f32> = let %24
-    %26:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f32 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 1a3bfa4..c4d8718 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat4x2<f32> @offset(8)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  float4x2 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(float4x2 m) {
 }
-%c = func(%m:mat4x2<f32>):void {
-  $B4: {
-    ret
-  }
+void d(float2 v) {
 }
-%d = func(%v:vec2<f32>):void {
-  $B5: {
-    ret
-  }
+void e(float f) {
 }
-%e = func(%f:f32):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].yx);
+  e((*tint_module_vars.u)[0].m[1].yx[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index cc446b3..636832a 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat4x2<f32> @offset(8)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  float4x2 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].yx;
 }
-
-$B1: {  # 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: {
-    %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/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
index d9f9408..ea597bc 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat4x3<f16> @offset(0)
-}
+struct Inner {
+  half4x3 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant half4x3* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant half3* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  half4x3 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  half3 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  half const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat4x3<f16>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat4x3<f16>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec3<f16>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec3<f16>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat4x3<f16> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat4x3<f16> = let %30
-    %32:vec3<f16> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec3<f16> = let %32
-    %34:i32 = call %i
-    %35:f16 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f16 = let %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/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
index 016a529..887ffc5 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat4x3<f16> @offset(0)
+struct Inner {
+  half4x3 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant half4x3* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant half3* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  half4x3 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  half3 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  half const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat4x3<f16>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat4x3<f16>, read> = let %10
-    %12:ptr<uniform, vec3<f16>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec3<f16>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat4x3<f16> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat4x3<f16> = let %22
-    %24:vec3<f16> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec3<f16> = let %24
-    %26:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f16 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index fe69066..0f0d3f9 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat4x3<f16> @offset(8)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  half4x3 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(half4x3 m) {
 }
-%c = func(%m:mat4x3<f16>):void {
-  $B4: {
-    ret
-  }
+void d(half3 v) {
 }
-%d = func(%v:vec3<f16>):void {
-  $B5: {
-    ret
-  }
+void e(half f) {
 }
-%e = func(%f:f16):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].zxy);
+  e((*tint_module_vars.u)[0].m[1].zxy[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index c6791799..47e0ffc 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat4x3<f16> @offset(8)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  half4x3 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].zxy;
 }
-
-$B1: {  # 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: {
-    %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_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
index 2ecbdef..a13af1b 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  m:mat4x3<f32> @offset(0)
-}
+struct Inner {
+  float4x3 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(16) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant float4x3* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant float3* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  float4x3 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  float3 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  float const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat4x3<f32>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat4x3<f32>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec3<f32>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec3<f32>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat4x3<f32> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat4x3<f32> = let %30
-    %32:vec3<f32> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec3<f32> = let %32
-    %34:i32 = call %i
-    %35:f32 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f32 = let %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/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
index 4276831..b1a2bec 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  m:mat4x3<f32> @offset(0)
+struct Inner {
+  float4x3 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant float4x3* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant float3* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  float4x3 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  float3 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  float const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(16) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat4x3<f32>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat4x3<f32>, read> = let %10
-    %12:ptr<uniform, vec3<f32>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec3<f32>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat4x3<f32> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat4x3<f32> = let %22
-    %24:vec3<f32> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec3<f32> = let %24
-    %26:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f32 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index eca171c..0f8f2fa 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat4x3<f32> @offset(16)
-  after:i32 @offset(128)
-}
+struct S {
+  int before;
+  float4x3 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(float4x3 m) {
 }
-%c = func(%m:mat4x3<f32>):void {
-  $B4: {
-    ret
-  }
+void d(float3 v) {
 }
-%d = func(%v:vec3<f32>):void {
-  $B5: {
-    ret
-  }
+void e(float f) {
 }
-%e = func(%f:f32):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].zxy);
+  e((*tint_module_vars.u)[0].m[1].zxy[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index ab68b96..705fe4f 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat4x3<f32> @offset(16)
-  after:i32 @offset(128)
+struct S {
+  int before;
+  float4x3 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].zxy;
 }
-
-$B1: {  # 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: {
-    %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/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
index 44fe5af..c1da52f 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat4x4<f16> @offset(0)
-}
+struct Inner {
+  half4x4 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant half4x4* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant half4* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  half4x4 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  half4 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  half const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat4x4<f16>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat4x4<f16>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec4<f16>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec4<f16>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat4x4<f16> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat4x4<f16> = let %30
-    %32:vec4<f16> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec4<f16> = let %32
-    %34:i32 = call %i
-    %35:f16 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f16 = let %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/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
index bde73d9..b6998d2 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  m:mat4x4<f16> @offset(0)
+struct Inner {
+  half4x4 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant half4x4* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant half4* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  half4x4 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  half4 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  half const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(8) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat4x4<f16>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat4x4<f16>, read> = let %10
-    %12:ptr<uniform, vec4<f16>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec4<f16>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat4x4<f16> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat4x4<f16> = let %22
-    %24:vec4<f16> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec4<f16> = let %24
-    %26:f16 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f16 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 6b8aa2c..1cb00c3 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat4x4<f16> @offset(8)
-  after:i32 @offset(64)
-}
+struct S {
+  int before;
+  half4x4 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(half4x4 m) {
 }
-%c = func(%m:mat4x4<f16>):void {
-  $B4: {
-    ret
-  }
+void d(half4 v) {
 }
-%d = func(%v:vec4<f16>):void {
-  $B5: {
-    ret
-  }
+void e(half f) {
 }
-%e = func(%f:f16):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].ywxz);
+  e((*tint_module_vars.u)[0].m[1].ywxz[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index 6db31f9..ef9038e 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat4x4<f16> @offset(8)
-  after:i32 @offset(64)
+struct S {
+  int before;
+  half4x4 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].ywxz;
 }
-
-$B1: {  # 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: {
-    %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_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
index 9ed2603..ef7eb1f 100644
--- 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
@@ -1,66 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  m:mat4x4<f32> @offset(0)
-}
+struct Inner {
+  float4x4 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+  thread int* counter;
+};
 
-Outer = struct @align(16) {
-  a:array<Inner, 4> @offset(0)
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.a=a, .counter=(&counter)};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_i = (&(*p_a)[i(tint_module_vars)]);
+  const constant tint_array<Inner, 4>* const p_a_i_a = (&(*p_a_i).a);
+  const constant Inner* const p_a_i_a_i = (&(*p_a_i_a)[i(tint_module_vars)]);
+  const constant float4x4* const p_a_i_a_i_m = (&(*p_a_i_a_i).m);
+  const constant float4* const p_a_i_a_i_m_i = (&(*p_a_i_a_i_m)[i(tint_module_vars)]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_i = (*p_a_i);
+  tint_array<Inner, 4> const l_a_i_a = (*p_a_i_a);
+  Inner const l_a_i_a_i = (*p_a_i_a_i);
+  float4x4 const l_a_i_a_i_m = (*p_a_i_a_i_m);
+  float4 const l_a_i_a_i_m_i = (*p_a_i_a_i_m_i);
+  float const l_a_i_a_i_m_i_i = (*p_a_i_a_i_m_i)[i(tint_module_vars)];
 }
-
-%i = func():i32 {
-  $B2: {
-    %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: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %9:i32 = call %i
-    %10:ptr<uniform, Outer, read> = access %p_a, %9
-    %p_a_i:ptr<uniform, Outer, read> = let %10
-    %12:ptr<uniform, array<Inner, 4>, read> = access %p_a_i, 0u
-    %p_a_i_a:ptr<uniform, array<Inner, 4>, read> = let %12
-    %14:i32 = call %i
-    %15:ptr<uniform, Inner, read> = access %p_a_i_a, %14
-    %p_a_i_a_i:ptr<uniform, Inner, read> = let %15
-    %17:ptr<uniform, mat4x4<f32>, read> = access %p_a_i_a_i, 0u
-    %p_a_i_a_i_m:ptr<uniform, mat4x4<f32>, read> = let %17
-    %19:i32 = call %i
-    %20:ptr<uniform, vec4<f32>, read> = access %p_a_i_a_i_m, %19
-    %p_a_i_a_i_m_i:ptr<uniform, vec4<f32>, read> = let %20
-    %22:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %22
-    %24:Outer = load %p_a_i
-    %l_a_i:Outer = let %24
-    %26:array<Inner, 4> = load %p_a_i_a
-    %l_a_i_a:array<Inner, 4> = let %26
-    %28:Inner = load %p_a_i_a_i
-    %l_a_i_a_i:Inner = let %28
-    %30:mat4x4<f32> = load %p_a_i_a_i_m
-    %l_a_i_a_i_m:mat4x4<f32> = let %30
-    %32:vec4<f32> = load %p_a_i_a_i_m_i
-    %l_a_i_a_i_m_i:vec4<f32> = let %32
-    %34:i32 = call %i
-    %35:f32 = load_vector_element %p_a_i_a_i_m_i, %34
-    %l_a_i_a_i_m_i_i:f32 = let %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/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
index 4addd07..29ee601 100644
--- 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
@@ -1,52 +1,40 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  m:mat4x4<f32> @offset(0)
+struct Inner {
+  float4x4 m;
+};
+struct Outer {
+  tint_array<Inner, 4> a;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<Outer, 4>* a;
+};
+
+kernel void f(const constant tint_array<Outer, 4>* a [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.a=a};
+  const constant tint_array<Outer, 4>* const p_a = tint_module_vars.a;
+  const constant Outer* const p_a_3 = (&(*p_a)[3]);
+  const constant tint_array<Inner, 4>* const p_a_3_a = (&(*p_a_3).a);
+  const constant Inner* const p_a_3_a_2 = (&(*p_a_3_a)[2]);
+  const constant float4x4* const p_a_3_a_2_m = (&(*p_a_3_a_2).m);
+  const constant float4* const p_a_3_a_2_m_1 = (&(*p_a_3_a_2_m)[1]);
+  tint_array<Outer, 4> const l_a = (*p_a);
+  Outer const l_a_3 = (*p_a_3);
+  tint_array<Inner, 4> const l_a_3_a = (*p_a_3_a);
+  Inner const l_a_3_a_2 = (*p_a_3_a_2);
+  float4x4 const l_a_3_a_2_m = (*p_a_3_a_2_m);
+  float4 const l_a_3_a_2_m_1 = (*p_a_3_a_2_m_1);
+  float const l_a_3_a_2_m_1_0 = (*p_a_3_a_2_m_1)[0];
 }
-
-Outer = struct @align(16) {
-  a:array<Inner, 4> @offset(0)
-}
-
-$B1: {  # root
-  %a:ptr<uniform, array<Outer, 4>, read> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %p_a:ptr<uniform, array<Outer, 4>, read> = let %a
-    %4:ptr<uniform, Outer, read> = access %p_a, 3i
-    %p_a_3:ptr<uniform, Outer, read> = let %4
-    %6:ptr<uniform, array<Inner, 4>, read> = access %p_a_3, 0u
-    %p_a_3_a:ptr<uniform, array<Inner, 4>, read> = let %6
-    %8:ptr<uniform, Inner, read> = access %p_a_3_a, 2i
-    %p_a_3_a_2:ptr<uniform, Inner, read> = let %8
-    %10:ptr<uniform, mat4x4<f32>, read> = access %p_a_3_a_2, 0u
-    %p_a_3_a_2_m:ptr<uniform, mat4x4<f32>, read> = let %10
-    %12:ptr<uniform, vec4<f32>, read> = access %p_a_3_a_2_m, 1i
-    %p_a_3_a_2_m_1:ptr<uniform, vec4<f32>, read> = let %12
-    %14:array<Outer, 4> = load %p_a
-    %l_a:array<Outer, 4> = let %14
-    %16:Outer = load %p_a_3
-    %l_a_3:Outer = let %16
-    %18:array<Inner, 4> = load %p_a_3_a
-    %l_a_3_a:array<Inner, 4> = let %18
-    %20:Inner = load %p_a_3_a_2
-    %l_a_3_a_2:Inner = let %20
-    %22:mat4x4<f32> = load %p_a_3_a_2_m
-    %l_a_3_a_2_m:mat4x4<f32> = let %22
-    %24:vec4<f32> = load %p_a_3_a_2_m_1
-    %l_a_3_a_2_m_1:vec4<f32> = let %24
-    %26:f32 = load_vector_element %p_a_3_a_2_m_1, 0i
-    %l_a_3_a_2_m_1_0:f32 = let %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 9034489..9e538e9 100644
--- 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
@@ -1,67 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat4x4<f32> @offset(16)
-  after:i32 @offset(128)
-}
+struct S {
+  int before;
+  float4x4 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+};
 
-$B1: {  # root
-  %u:ptr<uniform, array<S, 4>, read> = var @binding_point(0, 0)
+void a(tint_array<S, 4> a) {
 }
-
-%a = func(%a_1:array<S, 4>):void {  # %a_1: 'a'
-  $B2: {
-    ret
-  }
+void b(S s) {
 }
-%b = func(%s:S):void {
-  $B3: {
-    ret
-  }
+void c(float4x4 m) {
 }
-%c = func(%m:mat4x4<f32>):void {
-  $B4: {
-    ret
-  }
+void d(float4 v) {
 }
-%d = func(%v:vec4<f32>):void {
-  $B5: {
-    ret
-  }
+void e(float f) {
 }
-%e = func(%f:f32):void {
-  $B6: {
-    ret
-  }
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[2]);
+  c((*tint_module_vars.u)[2].m);
+  d((*tint_module_vars.u)[0].m[1].ywxz);
+  e((*tint_module_vars.u)[0].m[1].ywxz[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B7: {
-    %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
index ead75ea..b5f5b49 100644
--- 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
@@ -1,41 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(64) {
-  before:i32 @offset(0)
-  m:mat4x4<f32> @offset(16)
-  after:i32 @offset(128)
+struct S {
+  int before;
+  float4x4 m;
+  int after;
+};
+struct tint_module_vars_struct {
+  const constant tint_array<S, 4>* u;
+  thread tint_array<S, 4>* p;
+};
+
+kernel void f(const constant tint_array<S, 4>* u [[buffer(0)]]) {
+  thread tint_array<S, 4> p = {};
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[2];
+  (*tint_module_vars.p)[3].m = (*tint_module_vars.u)[2].m;
+  (*tint_module_vars.p)[1].m[0] = (*tint_module_vars.u)[0].m[1].ywxz;
 }
-
-$B1: {  # 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: {
-    %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/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
index a176b1c..aa9167c 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x2* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat2x2<f16>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant half2x2* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant half2x2* const p_m = tint_module_vars.m;
+  const constant half2* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  half2x2 const l_m = (*p_m);
+  half2 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat2x2<f16>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec2<f16>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec2<f16>, read> = let %10
-    %12:mat2x2<f16> = load %p_m
-    %l_m:mat2x2<f16> = let %12
-    %14:vec2<f16> = load %p_m_i
-    %l_m_i:vec2<f16> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index a228f13..b752d0b 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x2* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x2<f16>, read> = var @binding_point(0, 0)
+void a(half2x2 m) {
 }
-
-%a = func(%m:mat2x2<f16>):void {
-  $B2: {
-    ret
-  }
+void b(half2 v) {
 }
-%b = func(%v:vec2<f16>):void {
-  $B3: {
-    ret
-  }
+void c(half f) {
 }
-%c = func(%f:f16):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant half2x2* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].yx);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].yx[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index e0a91b8..aa953cf 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x2* u;
+  thread half2x2* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x2<f16>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat2x2<f16>, read_write> = var
+kernel void f(const constant half2x2* u [[buffer(0)]]) {
+  thread half2x2 p = half2x2(0.0h);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].yx;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 1ccbd29..6d5f8e9 100644
--- 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
@@ -1,35 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x2* u;
+  device half2x2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x2<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 1)
+kernel void f(const constant half2x2* u [[buffer(0)]], device half2x2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].yx;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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_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
index 3f757e5..66efc9f 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x2* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant float2x2* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant float2x2* const p_m = tint_module_vars.m;
+  const constant float2* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  float2x2 const l_m = (*p_m);
+  float2 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat2x2<f32>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec2<f32>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec2<f32>, read> = let %10
-    %12:mat2x2<f32> = load %p_m
-    %l_m:mat2x2<f32> = let %12
-    %14:vec2<f32> = load %p_m_i
-    %l_m_i:vec2<f32> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 4f8ada1..1308d6d 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x2* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
+void a(float2x2 m) {
 }
-
-%a = func(%m:mat2x2<f32>):void {
-  $B2: {
-    ret
-  }
+void b(float2 v) {
 }
-%b = func(%v:vec2<f32>):void {
-  $B3: {
-    ret
-  }
+void c(float f) {
 }
-%c = func(%f:f32):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant float2x2* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].yx);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].yx[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index 11abb4e..679d0e6 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x2* u;
+  thread float2x2* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat2x2<f32>, read_write> = var
+kernel void f(const constant float2x2* u [[buffer(0)]]) {
+  thread float2x2 p = float2x2(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].yx;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 30bc543..43e7c97 100644
--- 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
@@ -1,35 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x2* u;
+  device float2x2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 1)
+kernel void f(const constant float2x2* u [[buffer(0)]], device float2x2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].yx;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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/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
index b8b2652..417e155 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x3* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat2x3<f16>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant half2x3* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant half2x3* const p_m = tint_module_vars.m;
+  const constant half3* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  half2x3 const l_m = (*p_m);
+  half3 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat2x3<f16>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec3<f16>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec3<f16>, read> = let %10
-    %12:mat2x3<f16> = load %p_m
-    %l_m:mat2x3<f16> = let %12
-    %14:vec3<f16> = load %p_m_i
-    %l_m_i:vec3<f16> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 2ca0e5a..7bccb4a 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x3* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x3<f16>, read> = var @binding_point(0, 0)
+void a(half2x3 m) {
 }
-
-%a = func(%m:mat2x3<f16>):void {
-  $B2: {
-    ret
-  }
+void b(half3 v) {
 }
-%b = func(%v:vec3<f16>):void {
-  $B3: {
-    ret
-  }
+void c(half f) {
 }
-%c = func(%f:f16):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant half2x3* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].zxy);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].zxy[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index 7c3e9bb..37eb19c 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x3* u;
+  thread half2x3* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x3<f16>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat2x3<f16>, read_write> = var
+kernel void f(const constant half2x3* u [[buffer(0)]]) {
+  thread half2x3 p = half2x3(0.0h);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].zxy;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 05e28bd..b57de7b 100644
--- 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
@@ -1,46 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x3* u;
+  device half2x3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x3<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device half2x3* const target, half2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f16> = load %u
-    %5:void = call %tint_store_and_preserve_padding, %s, %4
-    %7:ptr<storage, vec3<f16>, read_write> = access %s, 1i
-    %8:ptr<uniform, vec3<f16>, read> = access %u, 0i
-    %9:vec3<f16> = load %8
-    store %7, %9
-    %10:ptr<storage, vec3<f16>, read_write> = access %s, 1i
-    %11:ptr<uniform, vec3<f16>, read> = access %u, 0i
-    %12:vec3<f16> = load %11
-    %13:vec3<f16> = swizzle %12, zxy
-    store %10, %13
-    %14:ptr<storage, vec3<f16>, read_write> = access %s, 0i
-    %15:ptr<uniform, vec3<f16>, read> = access %u, 1i
-    %16:f16 = load_vector_element %15, 0i
-    store_vector_element %14, 1i, %16
-    ret
-  }
+kernel void f(const constant half2x3* u [[buffer(0)]], device half2x3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_store_and_preserve_padding(tint_module_vars.s, (*tint_module_vars.u));
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].zxy;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f16>, read_write>, %value_param:mat2x3<f16>):void {
-  $B3: {
-    %19:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %20:vec3<f16> = access %value_param, 0u
-    store %19, %20
-    %21:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %22:vec3<f16> = access %value_param, 1u
-    store %21, %22
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index b132429..af9f52c 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x3* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat2x3<f32>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant float2x3* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant float2x3* const p_m = tint_module_vars.m;
+  const constant float3* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  float2x3 const l_m = (*p_m);
+  float3 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat2x3<f32>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec3<f32>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec3<f32>, read> = let %10
-    %12:mat2x3<f32> = load %p_m
-    %l_m:mat2x3<f32> = let %12
-    %14:vec3<f32> = load %p_m_i
-    %l_m_i:vec3<f32> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index c596a51..477f30b 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x3* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x3<f32>, read> = var @binding_point(0, 0)
+void a(float2x3 m) {
 }
-
-%a = func(%m:mat2x3<f32>):void {
-  $B2: {
-    ret
-  }
+void b(float3 v) {
 }
-%b = func(%v:vec3<f32>):void {
-  $B3: {
-    ret
-  }
+void c(float f) {
 }
-%c = func(%f:f32):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant float2x3* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].zxy);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].zxy[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index 0fa40e0..ad75be5 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x3* u;
+  thread float2x3* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x3<f32>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat2x3<f32>, read_write> = var
+kernel void f(const constant float2x3* u [[buffer(0)]]) {
+  thread float2x3 p = float2x3(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].zxy;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 3f43331..e6a439e 100644
--- 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
@@ -1,46 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x3* u;
+  device float2x3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x3<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f32> = load %u
-    %5:void = call %tint_store_and_preserve_padding, %s, %4
-    %7:ptr<storage, vec3<f32>, read_write> = access %s, 1i
-    %8:ptr<uniform, vec3<f32>, read> = access %u, 0i
-    %9:vec3<f32> = load %8
-    store %7, %9
-    %10:ptr<storage, vec3<f32>, read_write> = access %s, 1i
-    %11:ptr<uniform, vec3<f32>, read> = access %u, 0i
-    %12:vec3<f32> = load %11
-    %13:vec3<f32> = swizzle %12, zxy
-    store %10, %13
-    %14:ptr<storage, vec3<f32>, read_write> = access %s, 0i
-    %15:ptr<uniform, vec3<f32>, read> = access %u, 1i
-    %16:f32 = load_vector_element %15, 0i
-    store_vector_element %14, 1i, %16
-    ret
-  }
+kernel void f(const constant float2x3* u [[buffer(0)]], device float2x3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_store_and_preserve_padding(tint_module_vars.s, (*tint_module_vars.u));
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].zxy;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
-  $B3: {
-    %19:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %20:vec3<f32> = access %value_param, 0u
-    store %19, %20
-    %21:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %22:vec3<f32> = access %value_param, 1u
-    store %21, %22
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 6d5e6ec..b357225 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x4* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat2x4<f16>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant half2x4* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant half2x4* const p_m = tint_module_vars.m;
+  const constant half4* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  half2x4 const l_m = (*p_m);
+  half4 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat2x4<f16>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec4<f16>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec4<f16>, read> = let %10
-    %12:mat2x4<f16> = load %p_m
-    %l_m:mat2x4<f16> = let %12
-    %14:vec4<f16> = load %p_m_i
-    %l_m_i:vec4<f16> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 1223365..5ebe57f 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x4* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x4<f16>, read> = var @binding_point(0, 0)
+void a(half2x4 m) {
 }
-
-%a = func(%m:mat2x4<f16>):void {
-  $B2: {
-    ret
-  }
+void b(half4 v) {
 }
-%b = func(%v:vec4<f16>):void {
-  $B3: {
-    ret
-  }
+void c(half f) {
 }
-%c = func(%f:f16):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant half2x4* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].ywxz);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].ywxz[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index 242ee99..f76ad5b 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x4* u;
+  thread half2x4* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x4<f16>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat2x4<f16>, read_write> = var
+kernel void f(const constant half2x4* u [[buffer(0)]]) {
+  thread half2x4 p = half2x4(0.0h);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].ywxz;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index c10575a..12374ed 100644
--- 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
@@ -1,35 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x4* u;
+  device half2x4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x4<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 1)
+kernel void f(const constant half2x4* u [[buffer(0)]], device half2x4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].ywxz;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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_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
index d37a124..135950a 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x4* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant float2x4* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant float2x4* const p_m = tint_module_vars.m;
+  const constant float4* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  float2x4 const l_m = (*p_m);
+  float4 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat2x4<f32>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec4<f32>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec4<f32>, read> = let %10
-    %12:mat2x4<f32> = load %p_m
-    %l_m:mat2x4<f32> = let %12
-    %14:vec4<f32> = load %p_m_i
-    %l_m_i:vec4<f32> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index c85b6fb..2c00f86 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x4* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
+void a(float2x4 m) {
 }
-
-%a = func(%m:mat2x4<f32>):void {
-  $B2: {
-    ret
-  }
+void b(float4 v) {
 }
-%b = func(%v:vec4<f32>):void {
-  $B3: {
-    ret
-  }
+void c(float f) {
 }
-%c = func(%f:f32):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant float2x4* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].ywxz);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].ywxz[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index a435173..4ea2b1c 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x4* u;
+  thread float2x4* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat2x4<f32>, read_write> = var
+kernel void f(const constant float2x4* u [[buffer(0)]]) {
+  thread float2x4 p = float2x4(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].ywxz;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 776849d..513bbdb 100644
--- 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
@@ -1,35 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x4* u;
+  device float2x4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 1)
+kernel void f(const constant float2x4* u [[buffer(0)]], device float2x4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].ywxz;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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/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
index b9cb731..1299144 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x2* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat3x2<f16>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant half3x2* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant half3x2* const p_m = tint_module_vars.m;
+  const constant half2* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  half3x2 const l_m = (*p_m);
+  half2 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat3x2<f16>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec2<f16>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec2<f16>, read> = let %10
-    %12:mat3x2<f16> = load %p_m
-    %l_m:mat3x2<f16> = let %12
-    %14:vec2<f16> = load %p_m_i
-    %l_m_i:vec2<f16> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 51d7900..a8440f0 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x2* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x2<f16>, read> = var @binding_point(0, 0)
+void a(half3x2 m) {
 }
-
-%a = func(%m:mat3x2<f16>):void {
-  $B2: {
-    ret
-  }
+void b(half2 v) {
 }
-%b = func(%v:vec2<f16>):void {
-  $B3: {
-    ret
-  }
+void c(half f) {
 }
-%c = func(%f:f16):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant half3x2* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].yx);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].yx[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index a0c12b4..a319e46 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x2* u;
+  thread half3x2* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x2<f16>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat3x2<f16>, read_write> = var
+kernel void f(const constant half3x2* u [[buffer(0)]]) {
+  thread half3x2 p = half3x2(0.0h);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].yx;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 39104de..950172d 100644
--- 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
@@ -1,35 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x2* u;
+  device half3x2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x2<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 1)
+kernel void f(const constant half3x2* u [[buffer(0)]], device half3x2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].yx;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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_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
index a785ca7..a35f6c1 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x2* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat3x2<f32>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant float3x2* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant float3x2* const p_m = tint_module_vars.m;
+  const constant float2* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  float3x2 const l_m = (*p_m);
+  float2 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat3x2<f32>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec2<f32>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec2<f32>, read> = let %10
-    %12:mat3x2<f32> = load %p_m
-    %l_m:mat3x2<f32> = let %12
-    %14:vec2<f32> = load %p_m_i
-    %l_m_i:vec2<f32> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 33a39ee..4a911c4 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x2* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x2<f32>, read> = var @binding_point(0, 0)
+void a(float3x2 m) {
 }
-
-%a = func(%m:mat3x2<f32>):void {
-  $B2: {
-    ret
-  }
+void b(float2 v) {
 }
-%b = func(%v:vec2<f32>):void {
-  $B3: {
-    ret
-  }
+void c(float f) {
 }
-%c = func(%f:f32):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant float3x2* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].yx);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].yx[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index f618d23..16c0a92 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x2* u;
+  thread float3x2* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x2<f32>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat3x2<f32>, read_write> = var
+kernel void f(const constant float3x2* u [[buffer(0)]]) {
+  thread float3x2 p = float3x2(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].yx;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index a8519a7..99f310b 100644
--- 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
@@ -1,35 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x2* u;
+  device float3x2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x2<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 1)
+kernel void f(const constant float3x2* u [[buffer(0)]], device float3x2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].yx;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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/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
index 723ff77..7563f3c 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x3* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat3x3<f16>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant half3x3* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant half3x3* const p_m = tint_module_vars.m;
+  const constant half3* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  half3x3 const l_m = (*p_m);
+  half3 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat3x3<f16>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec3<f16>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec3<f16>, read> = let %10
-    %12:mat3x3<f16> = load %p_m
-    %l_m:mat3x3<f16> = let %12
-    %14:vec3<f16> = load %p_m_i
-    %l_m_i:vec3<f16> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index a19f3fc..42c5649 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x3* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x3<f16>, read> = var @binding_point(0, 0)
+void a(half3x3 m) {
 }
-
-%a = func(%m:mat3x3<f16>):void {
-  $B2: {
-    ret
-  }
+void b(half3 v) {
 }
-%b = func(%v:vec3<f16>):void {
-  $B3: {
-    ret
-  }
+void c(half f) {
 }
-%c = func(%f:f16):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant half3x3* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].zxy);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].zxy[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index a6e0aca..ac95c53 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x3* u;
+  thread half3x3* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x3<f16>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat3x3<f16>, read_write> = var
+kernel void f(const constant half3x3* u [[buffer(0)]]) {
+  thread half3x3 p = half3x3(0.0h);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].zxy;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index b8d1318..920a8a0 100644
--- 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
@@ -1,49 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x3* u;
+  device half3x3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x3<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device half3x3* const target, half3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f16> = load %u
-    %5:void = call %tint_store_and_preserve_padding, %s, %4
-    %7:ptr<storage, vec3<f16>, read_write> = access %s, 1i
-    %8:ptr<uniform, vec3<f16>, read> = access %u, 0i
-    %9:vec3<f16> = load %8
-    store %7, %9
-    %10:ptr<storage, vec3<f16>, read_write> = access %s, 1i
-    %11:ptr<uniform, vec3<f16>, read> = access %u, 0i
-    %12:vec3<f16> = load %11
-    %13:vec3<f16> = swizzle %12, zxy
-    store %10, %13
-    %14:ptr<storage, vec3<f16>, read_write> = access %s, 0i
-    %15:ptr<uniform, vec3<f16>, read> = access %u, 1i
-    %16:f16 = load_vector_element %15, 0i
-    store_vector_element %14, 1i, %16
-    ret
-  }
+kernel void f(const constant half3x3* u [[buffer(0)]], device half3x3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_store_and_preserve_padding(tint_module_vars.s, (*tint_module_vars.u));
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].zxy;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f16>, read_write>, %value_param:mat3x3<f16>):void {
-  $B3: {
-    %19:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %20:vec3<f16> = access %value_param, 0u
-    store %19, %20
-    %21:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %22:vec3<f16> = access %value_param, 1u
-    store %21, %22
-    %23:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %24:vec3<f16> = access %value_param, 2u
-    store %23, %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/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
index df56e12..cada3d6 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x3* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat3x3<f32>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant float3x3* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant float3x3* const p_m = tint_module_vars.m;
+  const constant float3* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  float3x3 const l_m = (*p_m);
+  float3 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat3x3<f32>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec3<f32>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec3<f32>, read> = let %10
-    %12:mat3x3<f32> = load %p_m
-    %l_m:mat3x3<f32> = let %12
-    %14:vec3<f32> = load %p_m_i
-    %l_m_i:vec3<f32> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 4d57392..a605cc2 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x3* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x3<f32>, read> = var @binding_point(0, 0)
+void a(float3x3 m) {
 }
-
-%a = func(%m:mat3x3<f32>):void {
-  $B2: {
-    ret
-  }
+void b(float3 v) {
 }
-%b = func(%v:vec3<f32>):void {
-  $B3: {
-    ret
-  }
+void c(float f) {
 }
-%c = func(%f:f32):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant float3x3* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].zxy);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].zxy[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index 0b3147b..55dad8a 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x3* u;
+  thread float3x3* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x3<f32>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat3x3<f32>, read_write> = var
+kernel void f(const constant float3x3* u [[buffer(0)]]) {
+  thread float3x3 p = float3x3(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].zxy;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 1e75702..a68a88b 100644
--- 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
@@ -1,49 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x3* u;
+  device float3x3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x3<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f32> = load %u
-    %5:void = call %tint_store_and_preserve_padding, %s, %4
-    %7:ptr<storage, vec3<f32>, read_write> = access %s, 1i
-    %8:ptr<uniform, vec3<f32>, read> = access %u, 0i
-    %9:vec3<f32> = load %8
-    store %7, %9
-    %10:ptr<storage, vec3<f32>, read_write> = access %s, 1i
-    %11:ptr<uniform, vec3<f32>, read> = access %u, 0i
-    %12:vec3<f32> = load %11
-    %13:vec3<f32> = swizzle %12, zxy
-    store %10, %13
-    %14:ptr<storage, vec3<f32>, read_write> = access %s, 0i
-    %15:ptr<uniform, vec3<f32>, read> = access %u, 1i
-    %16:f32 = load_vector_element %15, 0i
-    store_vector_element %14, 1i, %16
-    ret
-  }
+kernel void f(const constant float3x3* u [[buffer(0)]], device float3x3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_store_and_preserve_padding(tint_module_vars.s, (*tint_module_vars.u));
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].zxy;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f32>, read_write>, %value_param:mat3x3<f32>):void {
-  $B3: {
-    %19:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %20:vec3<f32> = access %value_param, 0u
-    store %19, %20
-    %21:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %22:vec3<f32> = access %value_param, 1u
-    store %21, %22
-    %23:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %24:vec3<f32> = access %value_param, 2u
-    store %23, %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/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
index 98f0969..bdeee5b 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x4* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat3x4<f16>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant half3x4* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant half3x4* const p_m = tint_module_vars.m;
+  const constant half4* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  half3x4 const l_m = (*p_m);
+  half4 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat3x4<f16>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec4<f16>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec4<f16>, read> = let %10
-    %12:mat3x4<f16> = load %p_m
-    %l_m:mat3x4<f16> = let %12
-    %14:vec4<f16> = load %p_m_i
-    %l_m_i:vec4<f16> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index e072db3..68d5ea3 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x4* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x4<f16>, read> = var @binding_point(0, 0)
+void a(half3x4 m) {
 }
-
-%a = func(%m:mat3x4<f16>):void {
-  $B2: {
-    ret
-  }
+void b(half4 v) {
 }
-%b = func(%v:vec4<f16>):void {
-  $B3: {
-    ret
-  }
+void c(half f) {
 }
-%c = func(%f:f16):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant half3x4* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].ywxz);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].ywxz[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index c5c8d5e..8cc1d30 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x4* u;
+  thread half3x4* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x4<f16>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat3x4<f16>, read_write> = var
+kernel void f(const constant half3x4* u [[buffer(0)]]) {
+  thread half3x4 p = half3x4(0.0h);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].ywxz;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index ff20b61..1c161a2 100644
--- 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
@@ -1,35 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x4* u;
+  device half3x4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x4<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 1)
+kernel void f(const constant half3x4* u [[buffer(0)]], device half3x4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].ywxz;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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_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
index 7a51367..59bb31a 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x4* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat3x4<f32>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant float3x4* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant float3x4* const p_m = tint_module_vars.m;
+  const constant float4* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  float3x4 const l_m = (*p_m);
+  float4 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat3x4<f32>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec4<f32>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec4<f32>, read> = let %10
-    %12:mat3x4<f32> = load %p_m
-    %l_m:mat3x4<f32> = let %12
-    %14:vec4<f32> = load %p_m_i
-    %l_m_i:vec4<f32> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index c29857f..c2e4ef5 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x4* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x4<f32>, read> = var @binding_point(0, 0)
+void a(float3x4 m) {
 }
-
-%a = func(%m:mat3x4<f32>):void {
-  $B2: {
-    ret
-  }
+void b(float4 v) {
 }
-%b = func(%v:vec4<f32>):void {
-  $B3: {
-    ret
-  }
+void c(float f) {
 }
-%c = func(%f:f32):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant float3x4* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].ywxz);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].ywxz[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index 27467a3..820fdbe 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x4* u;
+  thread float3x4* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x4<f32>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat3x4<f32>, read_write> = var
+kernel void f(const constant float3x4* u [[buffer(0)]]) {
+  thread float3x4 p = float3x4(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].ywxz;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index d41ec59..709265f 100644
--- 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
@@ -1,35 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x4* u;
+  device float3x4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x4<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 1)
+kernel void f(const constant float3x4* u [[buffer(0)]], device float3x4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].ywxz;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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/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
index 869cf42..2862bdb 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x2* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat4x2<f16>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant half4x2* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant half4x2* const p_m = tint_module_vars.m;
+  const constant half2* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  half4x2 const l_m = (*p_m);
+  half2 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat4x2<f16>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec2<f16>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec2<f16>, read> = let %10
-    %12:mat4x2<f16> = load %p_m
-    %l_m:mat4x2<f16> = let %12
-    %14:vec2<f16> = load %p_m_i
-    %l_m_i:vec2<f16> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 90525fe..b85213c 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x2* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x2<f16>, read> = var @binding_point(0, 0)
+void a(half4x2 m) {
 }
-
-%a = func(%m:mat4x2<f16>):void {
-  $B2: {
-    ret
-  }
+void b(half2 v) {
 }
-%b = func(%v:vec2<f16>):void {
-  $B3: {
-    ret
-  }
+void c(half f) {
 }
-%c = func(%f:f16):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant half4x2* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].yx);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].yx[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index 0e942db..6a9f6f0 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x2* u;
+  thread half4x2* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x2<f16>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat4x2<f16>, read_write> = var
+kernel void f(const constant half4x2* u [[buffer(0)]]) {
+  thread half4x2 p = half4x2(0.0h);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].yx;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 3797fed..9c8ca1c 100644
--- 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
@@ -1,35 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x2* u;
+  device half4x2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x2<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 1)
+kernel void f(const constant half4x2* u [[buffer(0)]], device half4x2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].yx;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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_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
index 0091daf..bbd0f74 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x2* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat4x2<f32>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant float4x2* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant float4x2* const p_m = tint_module_vars.m;
+  const constant float2* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  float4x2 const l_m = (*p_m);
+  float2 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat4x2<f32>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec2<f32>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec2<f32>, read> = let %10
-    %12:mat4x2<f32> = load %p_m
-    %l_m:mat4x2<f32> = let %12
-    %14:vec2<f32> = load %p_m_i
-    %l_m_i:vec2<f32> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index dc0d78f..2928ebf 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x2* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x2<f32>, read> = var @binding_point(0, 0)
+void a(float4x2 m) {
 }
-
-%a = func(%m:mat4x2<f32>):void {
-  $B2: {
-    ret
-  }
+void b(float2 v) {
 }
-%b = func(%v:vec2<f32>):void {
-  $B3: {
-    ret
-  }
+void c(float f) {
 }
-%c = func(%f:f32):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant float4x2* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].yx);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].yx[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index 368cba9..5c68541 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x2* u;
+  thread float4x2* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x2<f32>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat4x2<f32>, read_write> = var
+kernel void f(const constant float4x2* u [[buffer(0)]]) {
+  thread float4x2 p = float4x2(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].yx;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index f190196..776bc7d 100644
--- 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
@@ -1,35 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x2* u;
+  device float4x2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x2<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 1)
+kernel void f(const constant float4x2* u [[buffer(0)]], device float4x2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].yx;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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/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
index 482cb42..dc9211c 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x3* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat4x3<f16>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant half4x3* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant half4x3* const p_m = tint_module_vars.m;
+  const constant half3* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  half4x3 const l_m = (*p_m);
+  half3 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat4x3<f16>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec3<f16>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec3<f16>, read> = let %10
-    %12:mat4x3<f16> = load %p_m
-    %l_m:mat4x3<f16> = let %12
-    %14:vec3<f16> = load %p_m_i
-    %l_m_i:vec3<f16> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index fb0290a..398f88b 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x3* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x3<f16>, read> = var @binding_point(0, 0)
+void a(half4x3 m) {
 }
-
-%a = func(%m:mat4x3<f16>):void {
-  $B2: {
-    ret
-  }
+void b(half3 v) {
 }
-%b = func(%v:vec3<f16>):void {
-  $B3: {
-    ret
-  }
+void c(half f) {
 }
-%c = func(%f:f16):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant half4x3* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].zxy);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].zxy[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index 6a01a6f..3a3d966 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x3* u;
+  thread half4x3* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x3<f16>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat4x3<f16>, read_write> = var
+kernel void f(const constant half4x3* u [[buffer(0)]]) {
+  thread half4x3 p = half4x3(0.0h);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].zxy;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index c327eb5..0840a07 100644
--- 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
@@ -1,52 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x3* u;
+  device half4x3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x3<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device half4x3* const target, half4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f16> = load %u
-    %5:void = call %tint_store_and_preserve_padding, %s, %4
-    %7:ptr<storage, vec3<f16>, read_write> = access %s, 1i
-    %8:ptr<uniform, vec3<f16>, read> = access %u, 0i
-    %9:vec3<f16> = load %8
-    store %7, %9
-    %10:ptr<storage, vec3<f16>, read_write> = access %s, 1i
-    %11:ptr<uniform, vec3<f16>, read> = access %u, 0i
-    %12:vec3<f16> = load %11
-    %13:vec3<f16> = swizzle %12, zxy
-    store %10, %13
-    %14:ptr<storage, vec3<f16>, read_write> = access %s, 0i
-    %15:ptr<uniform, vec3<f16>, read> = access %u, 1i
-    %16:f16 = load_vector_element %15, 0i
-    store_vector_element %14, 1i, %16
-    ret
-  }
+kernel void f(const constant half4x3* u [[buffer(0)]], device half4x3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_store_and_preserve_padding(tint_module_vars.s, (*tint_module_vars.u));
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].zxy;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f16>, read_write>, %value_param:mat4x3<f16>):void {
-  $B3: {
-    %19:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %20:vec3<f16> = access %value_param, 0u
-    store %19, %20
-    %21:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %22:vec3<f16> = access %value_param, 1u
-    store %21, %22
-    %23:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %24:vec3<f16> = access %value_param, 2u
-    store %23, %24
-    %25:ptr<storage, vec3<f16>, read_write> = access %target, 3u
-    %26:vec3<f16> = access %value_param, 3u
-    store %25, %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index adf6d98..6516037 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x3* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat4x3<f32>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant float4x3* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant float4x3* const p_m = tint_module_vars.m;
+  const constant float3* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  float4x3 const l_m = (*p_m);
+  float3 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat4x3<f32>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec3<f32>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec3<f32>, read> = let %10
-    %12:mat4x3<f32> = load %p_m
-    %l_m:mat4x3<f32> = let %12
-    %14:vec3<f32> = load %p_m_i
-    %l_m_i:vec3<f32> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 20ea079..9f85d72 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x3* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x3<f32>, read> = var @binding_point(0, 0)
+void a(float4x3 m) {
 }
-
-%a = func(%m:mat4x3<f32>):void {
-  $B2: {
-    ret
-  }
+void b(float3 v) {
 }
-%b = func(%v:vec3<f32>):void {
-  $B3: {
-    ret
-  }
+void c(float f) {
 }
-%c = func(%f:f32):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant float4x3* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].zxy);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].zxy[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index ceedbe2..3000982 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x3* u;
+  thread float4x3* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x3<f32>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat4x3<f32>, read_write> = var
+kernel void f(const constant float4x3* u [[buffer(0)]]) {
+  thread float4x3 p = float4x3(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].zxy;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 5c97be5..7df73c1 100644
--- 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
@@ -1,52 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x3* u;
+  device float4x3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x3<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f32> = load %u
-    %5:void = call %tint_store_and_preserve_padding, %s, %4
-    %7:ptr<storage, vec3<f32>, read_write> = access %s, 1i
-    %8:ptr<uniform, vec3<f32>, read> = access %u, 0i
-    %9:vec3<f32> = load %8
-    store %7, %9
-    %10:ptr<storage, vec3<f32>, read_write> = access %s, 1i
-    %11:ptr<uniform, vec3<f32>, read> = access %u, 0i
-    %12:vec3<f32> = load %11
-    %13:vec3<f32> = swizzle %12, zxy
-    store %10, %13
-    %14:ptr<storage, vec3<f32>, read_write> = access %s, 0i
-    %15:ptr<uniform, vec3<f32>, read> = access %u, 1i
-    %16:f32 = load_vector_element %15, 0i
-    store_vector_element %14, 1i, %16
-    ret
-  }
+kernel void f(const constant float4x3* u [[buffer(0)]], device float4x3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  tint_store_and_preserve_padding(tint_module_vars.s, (*tint_module_vars.u));
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].zxy;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f32>, read_write>, %value_param:mat4x3<f32>):void {
-  $B3: {
-    %19:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %20:vec3<f32> = access %value_param, 0u
-    store %19, %20
-    %21:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %22:vec3<f32> = access %value_param, 1u
-    store %21, %22
-    %23:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %24:vec3<f32> = access %value_param, 2u
-    store %23, %24
-    %25:ptr<storage, vec3<f32>, read_write> = access %target, 3u
-    %26:vec3<f32> = access %value_param, 3u
-    store %25, %26
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 803671e..f9d687c 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x4* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat4x4<f16>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant half4x4* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant half4x4* const p_m = tint_module_vars.m;
+  const constant half4* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  half4x4 const l_m = (*p_m);
+  half4 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat4x4<f16>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec4<f16>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec4<f16>, read> = let %10
-    %12:mat4x4<f16> = load %p_m
-    %l_m:mat4x4<f16> = let %12
-    %14:vec4<f16> = load %p_m_i
-    %l_m_i:vec4<f16> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 03b38f5d..d6675da 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x4* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x4<f16>, read> = var @binding_point(0, 0)
+void a(half4x4 m) {
 }
-
-%a = func(%m:mat4x4<f16>):void {
-  $B2: {
-    ret
-  }
+void b(half4 v) {
 }
-%b = func(%v:vec4<f16>):void {
-  $B3: {
-    ret
-  }
+void c(half f) {
 }
-%c = func(%f:f16):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant half4x4* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].ywxz);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].ywxz[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index 81b005e..77a0764 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x4* u;
+  thread half4x4* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x4<f16>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat4x4<f16>, read_write> = var
+kernel void f(const constant half4x4* u [[buffer(0)]]) {
+  thread half4x4 p = half4x4(0.0h);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].ywxz;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 8bf94bf..96f3eb6 100644
--- 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
@@ -1,35 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x4* u;
+  device half4x4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x4<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 1)
+kernel void f(const constant half4x4* u [[buffer(0)]], device half4x4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].ywxz;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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_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
index 3a35fc9..aa9c4df 100644
--- 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
@@ -1,37 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x4* m;
+  thread int* counter;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %m:ptr<uniform, mat4x4<f32>, read> = var @binding_point(0, 0)
-  %counter:ptr<private, i32, read_write> = var, 0i
+int i(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-
-%i = func():i32 {
-  $B2: {
-    %4:i32 = load %counter
-    %5:i32 = add %4, 1i
-    store %counter, %5
-    %6:i32 = load %counter
-    ret %6
-  }
+kernel void f(const constant float4x4* m [[buffer(0)]]) {
+  thread int counter = 0;
+  tint_module_vars_struct const tint_module_vars = {.m=m, .counter=(&counter)};
+  const constant float4x4* const p_m = tint_module_vars.m;
+  const constant float4* const p_m_i = (&(*p_m)[i(tint_module_vars)]);
+  float4x4 const l_m = (*p_m);
+  float4 const l_m_i = (*p_m_i);
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %p_m:ptr<uniform, mat4x4<f32>, read> = let %m
-    %9:i32 = call %i
-    %10:ptr<uniform, vec4<f32>, read> = access %p_m, %9
-    %p_m_i:ptr<uniform, vec4<f32>, read> = let %10
-    %12:mat4x4<f32> = load %p_m
-    %l_m:mat4x4<f32> = let %12
-    %14:vec4<f32> = load %p_m_i
-    %l_m_i:vec4<f32> = let %14
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting 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
index 8898af0..8b51e8a 100644
--- 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
@@ -1,51 +1,20 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x4* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x4<f32>, read> = var @binding_point(0, 0)
+void a(float4x4 m) {
 }
-
-%a = func(%m:mat4x4<f32>):void {
-  $B2: {
-    ret
-  }
+void b(float4 v) {
 }
-%b = func(%v:vec4<f32>):void {
-  $B3: {
-    ret
-  }
+void c(float f) {
 }
-%c = func(%f:f32):void {
-  $B4: {
-    ret
-  }
+kernel void f(const constant float4x4* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  a((*tint_module_vars.u));
+  b((*tint_module_vars.u)[1]);
+  b((*tint_module_vars.u)[1].ywxz);
+  c((*tint_module_vars.u)[1][0u]);
+  c((*tint_module_vars.u)[1].ywxz[0u]);
 }
-%f_1 = @compute @workgroup_size(1, 1, 1) func():void {  # %f_1: 'f'
-  $B5: {
-    %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
index 5419a0a..270763c 100644
--- 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
@@ -1,35 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x4* u;
+  thread float4x4* p;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x4<f32>, read> = var @binding_point(0, 0)
-  %p:ptr<private, mat4x4<f32>, read_write> = var
+kernel void f(const constant float4x4* u [[buffer(0)]]) {
+  thread float4x4 p = float4x4(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.u=u, .p=(&p)};
+  (*tint_module_vars.p) = (*tint_module_vars.u);
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.p)[1] = (*tint_module_vars.u)[0].ywxz;
+  (*tint_module_vars.p)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 2046512..cefcb4b 100644
--- 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
@@ -1,35 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x4* u;
+  device float4x4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x4<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 1)
+kernel void f(const constant float4x4* u [[buffer(0)]], device float4x4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  (*tint_module_vars.s) = (*tint_module_vars.u);
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0];
+  (*tint_module_vars.s)[1] = (*tint_module_vars.u)[0].ywxz;
+  (*tint_module_vars.s)[0][1] = (*tint_module_vars.u)[1][0];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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/types/f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/f16.wgsl.expected.ir.msl
index 23ca7a8..c5b30d2 100644
--- a/test/tint/buffer/uniform/types/f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/f16.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half* u;
+  device half* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, f16, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f16, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant half* u [[buffer(0)]], device half* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:f16 = load %u
-    %x:f16 = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index b0b6bdd..dc05668 100644
--- a/test/tint/buffer/uniform/types/f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/f32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float* u;
+  device float* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, f32, read> = var @binding_point(0, 0)
-  %s:ptr<storage, f32, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant float* u [[buffer(0)]], device float* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:f32 = load %u
-    %x:f32 = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index f8c3a23..dd0fc8a 100644
--- a/test/tint/buffer/uniform/types/i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/i32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant int* u;
+  device int* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, i32, read> = var @binding_point(0, 0)
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant int* u [[buffer(0)]], device int* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  int const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:i32 = load %u
-    %x:i32 = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index e500eb8..a05cbb4 100644
--- a/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat2x2_f16.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x2* u;
+  device half2x2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x2<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant half2x2* u [[buffer(0)]], device half2x2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half2x2 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x2<f16> = load %u
-    %x:mat2x2<f16> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 6f523cc..9f0111e 100644
--- a/test/tint/buffer/uniform/types/mat2x2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat2x2_f32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x2* u;
+  device float2x2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant float2x2* u [[buffer(0)]], device float2x2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float2x2 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x2<f32> = load %u
-    %x:mat2x2<f32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 3394820..2effcd6 100644
--- a/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat2x3_f16.wgsl.expected.ir.msl
@@ -1,34 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x3* u;
+  device half2x3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x3<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device half2x3* const target, half2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f16> = load %u
-    %x:mat2x3<f16> = let %4
-    %6:void = call %tint_store_and_preserve_padding, %s, %x
-    ret
-  }
+kernel void tint_symbol(const constant half2x3* u [[buffer(0)]], device half2x3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half2x3 const x = (*tint_module_vars.u);
+  tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f16>, read_write>, %value_param:mat2x3<f16>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %11:vec3<f16> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %13:vec3<f16> = access %value_param, 1u
-    store %12, %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/types/mat2x3_f32.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.msl
index 7067254..19199b6 100644
--- a/test/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat2x3_f32.wgsl.expected.ir.msl
@@ -1,34 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x3* u;
+  device float2x3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x3<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f32> = load %u
-    %x:mat2x3<f32> = let %4
-    %6:void = call %tint_store_and_preserve_padding, %s, %x
-    ret
-  }
+kernel void tint_symbol(const constant float2x3* u [[buffer(0)]], device float2x3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float2x3 const x = (*tint_module_vars.u);
+  tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %11:vec3<f32> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %13:vec3<f32> = access %value_param, 1u
-    store %12, %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/types/mat2x4_f16.wgsl.expected.ir.msl b/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.msl
index 9d37062..2b3cf8f 100644
--- a/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat2x4_f16.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2x4* u;
+  device half2x4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x4<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant half2x4* u [[buffer(0)]], device half2x4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half2x4 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x4<f16> = load %u
-    %x:mat2x4<f16> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index f0e779e..80b5744 100644
--- a/test/tint/buffer/uniform/types/mat2x4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat2x4_f32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x4* u;
+  device float2x4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant float2x4* u [[buffer(0)]], device float2x4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float2x4 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x4<f32> = load %u
-    %x:mat2x4<f32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index abe10dd..afe4fc4 100644
--- a/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat3x2_f16.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x2* u;
+  device half3x2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x2<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant half3x2* u [[buffer(0)]], device half3x2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half3x2 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x2<f16> = load %u
-    %x:mat3x2<f16> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 670f15b..4853faa 100644
--- a/test/tint/buffer/uniform/types/mat3x2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat3x2_f32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x2* u;
+  device float3x2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x2<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant float3x2* u [[buffer(0)]], device float3x2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float3x2 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x2<f32> = load %u
-    %x:mat3x2<f32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index be8a99a..efacca3 100644
--- a/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat3x3_f16.wgsl.expected.ir.msl
@@ -1,37 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x3* u;
+  device half3x3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x3<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device half3x3* const target, half3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f16> = load %u
-    %x:mat3x3<f16> = let %4
-    %6:void = call %tint_store_and_preserve_padding, %s, %x
-    ret
-  }
+kernel void tint_symbol(const constant half3x3* u [[buffer(0)]], device half3x3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half3x3 const x = (*tint_module_vars.u);
+  tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f16>, read_write>, %value_param:mat3x3<f16>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %11:vec3<f16> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %13:vec3<f16> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %15:vec3<f16> = access %value_param, 2u
-    store %14, %15
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 200b1fa..5e09f19 100644
--- a/test/tint/buffer/uniform/types/mat3x3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat3x3_f32.wgsl.expected.ir.msl
@@ -1,37 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x3* u;
+  device float3x3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x3<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f32> = load %u
-    %x:mat3x3<f32> = let %4
-    %6:void = call %tint_store_and_preserve_padding, %s, %x
-    ret
-  }
+kernel void tint_symbol(const constant float3x3* u [[buffer(0)]], device float3x3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float3x3 const x = (*tint_module_vars.u);
+  tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f32>, read_write>, %value_param:mat3x3<f32>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %11:vec3<f32> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %13:vec3<f32> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %15:vec3<f32> = access %value_param, 2u
-    store %14, %15
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index d6c94a1..957fccc 100644
--- a/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat3x4_f16.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3x4* u;
+  device half3x4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x4<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant half3x4* u [[buffer(0)]], device half3x4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half3x4 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x4<f16> = load %u
-    %x:mat3x4<f16> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 2ff19a9..9caac90 100644
--- a/test/tint/buffer/uniform/types/mat3x4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat3x4_f32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3x4* u;
+  device float3x4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat3x4<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant float3x4* u [[buffer(0)]], device float3x4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float3x4 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x4<f32> = load %u
-    %x:mat3x4<f32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 4d67658..7895c94 100644
--- a/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat4x2_f16.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x2* u;
+  device half4x2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x2<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant half4x2* u [[buffer(0)]], device half4x2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half4x2 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x2<f16> = load %u
-    %x:mat4x2<f16> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 7c78a9d..023b586 100644
--- a/test/tint/buffer/uniform/types/mat4x2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat4x2_f32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x2* u;
+  device float4x2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x2<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant float4x2* u [[buffer(0)]], device float4x2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float4x2 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x2<f32> = load %u
-    %x:mat4x2<f32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 431a296..6ffcff3 100644
--- a/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat4x3_f16.wgsl.expected.ir.msl
@@ -1,40 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x3* u;
+  device half4x3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x3<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device half4x3* const target, half4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f16> = load %u
-    %x:mat4x3<f16> = let %4
-    %6:void = call %tint_store_and_preserve_padding, %s, %x
-    ret
-  }
+kernel void tint_symbol(const constant half4x3* u [[buffer(0)]], device half4x3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half4x3 const x = (*tint_module_vars.u);
+  tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f16>, read_write>, %value_param:mat4x3<f16>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %11:vec3<f16> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %13:vec3<f16> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %15:vec3<f16> = access %value_param, 2u
-    store %14, %15
-    %16:ptr<storage, vec3<f16>, read_write> = access %target, 3u
-    %17:vec3<f16> = access %value_param, 3u
-    store %16, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index e427638..3dd2c1d 100644
--- a/test/tint/buffer/uniform/types/mat4x3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat4x3_f32.wgsl.expected.ir.msl
@@ -1,40 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x3* u;
+  device float4x3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x3<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 1)
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f32> = load %u
-    %x:mat4x3<f32> = let %4
-    %6:void = call %tint_store_and_preserve_padding, %s, %x
-    ret
-  }
+kernel void tint_symbol(const constant float4x3* u [[buffer(0)]], device float4x3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float4x3 const x = (*tint_module_vars.u);
+  tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f32>, read_write>, %value_param:mat4x3<f32>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %11:vec3<f32> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %13:vec3<f32> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %15:vec3<f32> = access %value_param, 2u
-    store %14, %15
-    %16:ptr<storage, vec3<f32>, read_write> = access %target, 3u
-    %17:vec3<f32> = access %value_param, 3u
-    store %16, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index b8d72f2..e8c4773 100644
--- a/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat4x4_f16.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4x4* u;
+  device half4x4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x4<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant half4x4* u [[buffer(0)]], device half4x4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half4x4 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x4<f16> = load %u
-    %x:mat4x4<f16> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 56beb0c..ba36e70 100644
--- a/test/tint/buffer/uniform/types/mat4x4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/mat4x4_f32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4x4* u;
+  device float4x4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, mat4x4<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant float4x4* u [[buffer(0)]], device float4x4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float4x4 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x4<f32> = load %u
-    %x:mat4x4<f32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 4a7cccb..a238665 100644
--- a/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/struct_f16.wgsl.expected.ir.msl
@@ -1,55 +1,28 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct Inner {
+  half scalar_f16;
+  half3 vec3_f16;
+  half2x4 mat2x4_f16;
+};
+struct S {
+  Inner inner;
+};
+struct tint_module_vars_struct {
+  const constant S* u;
+  device S* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(8) {
-  scalar_f16:f16 @offset(0)
-  vec3_f16:vec3<f16> @offset(8)
-  mat2x4_f16:mat2x4<f16> @offset(16)
+void tint_store_and_preserve_padding(device Inner* const target, Inner value_param) {
+  (*target).scalar_f16 = value_param.scalar_f16;
+  (*target).vec3_f16 = value_param.vec3_f16;
+  (*target).mat2x4_f16 = value_param.mat2x4_f16;
 }
-
-S = struct @align(8) {
-  inner:Inner @offset(0)
+void tint_store_and_preserve_padding(device S* const target, S value_param) {
+  tint_store_and_preserve_padding((&(*target).inner), value_param.inner);
 }
-
-$B1: {  # root
-  %u:ptr<uniform, S, read> = var @binding_point(0, 0)
-  %s:ptr<storage, S, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant S* u [[buffer(0)]], device S* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  S const x = (*tint_module_vars.u);
+  tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:S = load %u
-    %x:S = let %4
-    %6:void = call %tint_store_and_preserve_padding, %s, %x
-    ret
-  }
-}
-%tint_store_and_preserve_padding = func(%target:ptr<storage, S, read_write>, %value_param:S):void {
-  $B3: {
-    %10:ptr<storage, Inner, read_write> = access %target, 0u
-    %11:Inner = access %value_param, 0u
-    %12:void = call %tint_store_and_preserve_padding_1, %10, %11
-    ret
-  }
-}
-%tint_store_and_preserve_padding_1 = func(%target_1:ptr<storage, Inner, read_write>, %value_param_1:Inner):void {  # %tint_store_and_preserve_padding_1: 'tint_store_and_preserve_padding', %target_1: 'target', %value_param_1: 'value_param'
-  $B4: {
-    %16:ptr<storage, f16, read_write> = access %target_1, 0u
-    %17:f16 = access %value_param_1, 0u
-    store %16, %17
-    %18:ptr<storage, vec3<f16>, read_write> = access %target_1, 1u
-    %19:vec3<f16> = access %value_param_1, 1u
-    store %18, %19
-    %20:ptr<storage, mat2x4<f16>, read_write> = access %target_1, 2u
-    %21:mat2x4<f16> = access %value_param_1, 2u
-    store %20, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index fdc49bb..bf9bb49 100644
--- a/test/tint/buffer/uniform/types/struct_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/struct_f32.wgsl.expected.ir.msl
@@ -1,55 +1,28 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct Inner {
+  float scalar_f32;
+  float3 vec3_f32;
+  float2x4 mat2x4_f32;
+};
+struct S {
+  Inner inner;
+};
+struct tint_module_vars_struct {
+  const constant S* u;
+  device S* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(16) {
-  scalar_f32:f32 @offset(0)
-  vec3_f32:vec3<f32> @offset(16)
-  mat2x4_f32:mat2x4<f32> @offset(32)
+void tint_store_and_preserve_padding(device Inner* const target, Inner value_param) {
+  (*target).scalar_f32 = value_param.scalar_f32;
+  (*target).vec3_f32 = value_param.vec3_f32;
+  (*target).mat2x4_f32 = value_param.mat2x4_f32;
 }
-
-S = struct @align(16) {
-  inner:Inner @offset(0)
+void tint_store_and_preserve_padding(device S* const target, S value_param) {
+  tint_store_and_preserve_padding((&(*target).inner), value_param.inner);
 }
-
-$B1: {  # root
-  %u:ptr<uniform, S, read> = var @binding_point(0, 0)
-  %s:ptr<storage, S, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant S* u [[buffer(0)]], device S* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  S const x = (*tint_module_vars.u);
+  tint_store_and_preserve_padding(tint_module_vars.s, x);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:S = load %u
-    %x:S = let %4
-    %6:void = call %tint_store_and_preserve_padding, %s, %x
-    ret
-  }
-}
-%tint_store_and_preserve_padding = func(%target:ptr<storage, S, read_write>, %value_param:S):void {
-  $B3: {
-    %10:ptr<storage, Inner, read_write> = access %target, 0u
-    %11:Inner = access %value_param, 0u
-    %12:void = call %tint_store_and_preserve_padding_1, %10, %11
-    ret
-  }
-}
-%tint_store_and_preserve_padding_1 = func(%target_1:ptr<storage, Inner, read_write>, %value_param_1:Inner):void {  # %tint_store_and_preserve_padding_1: 'tint_store_and_preserve_padding', %target_1: 'target', %value_param_1: 'value_param'
-  $B4: {
-    %16:ptr<storage, f32, read_write> = access %target_1, 0u
-    %17:f32 = access %value_param_1, 0u
-    store %16, %17
-    %18:ptr<storage, vec3<f32>, read_write> = access %target_1, 1u
-    %19:vec3<f32> = access %value_param_1, 1u
-    store %18, %19
-    %20:ptr<storage, mat2x4<f32>, read_write> = access %target_1, 2u
-    %21:mat2x4<f32> = access %value_param_1, 2u
-    store %20, %21
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index f81df8c..972a627 100644
--- a/test/tint/buffer/uniform/types/u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/u32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant uint* u;
+  device uint* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, u32, read> = var @binding_point(0, 0)
-  %s:ptr<storage, u32, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant uint* u [[buffer(0)]], device uint* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  uint const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:u32 = load %u
-    %x:u32 = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index c058c67..57ff3e9 100644
--- a/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec2_f16.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half2* u;
+  device half2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, vec2<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, vec2<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant half2* u [[buffer(0)]], device half2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half2 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:vec2<f16> = load %u
-    %x:vec2<f16> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index d8275c8..8a0d9a6 100644
--- a/test/tint/buffer/uniform/types/vec2_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec2_f32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2* u;
+  device float2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, vec2<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, vec2<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant float2* u [[buffer(0)]], device float2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float2 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:vec2<f32> = load %u
-    %x:vec2<f32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index c033670..04f2a65 100644
--- a/test/tint/buffer/uniform/types/vec2_i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec2_i32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant int2* u;
+  device int2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, vec2<i32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, vec2<i32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant int2* u [[buffer(0)]], device int2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  int2 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:vec2<i32> = load %u
-    %x:vec2<i32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index c5e6856..db64177 100644
--- a/test/tint/buffer/uniform/types/vec2_u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec2_u32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant uint2* u;
+  device uint2* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, vec2<u32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, vec2<u32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant uint2* u [[buffer(0)]], device uint2* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  uint2 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:vec2<u32> = load %u
-    %x:vec2<u32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index e2ee911..944e852 100644
--- a/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec3_f16.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half3* u;
+  device half3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, vec3<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, vec3<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant half3* u [[buffer(0)]], device half3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half3 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:vec3<f16> = load %u
-    %x:vec3<f16> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 480b084..0ac2e48 100644
--- a/test/tint/buffer/uniform/types/vec3_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec3_f32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float3* u;
+  device float3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, vec3<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, vec3<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant float3* u [[buffer(0)]], device float3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float3 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:vec3<f32> = load %u
-    %x:vec3<f32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 242cae3..c74f20c 100644
--- a/test/tint/buffer/uniform/types/vec3_i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec3_i32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant int3* u;
+  device int3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, vec3<i32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, vec3<i32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant int3* u [[buffer(0)]], device int3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  int3 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:vec3<i32> = load %u
-    %x:vec3<i32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 18b6c5e..83d9d58 100644
--- a/test/tint/buffer/uniform/types/vec3_u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec3_u32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant uint3* u;
+  device uint3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, vec3<u32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, vec3<u32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant uint3* u [[buffer(0)]], device uint3* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  uint3 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:vec3<u32> = load %u
-    %x:vec3<u32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index f73d656..8472176 100644
--- a/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec4_f16.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant half4* u;
+  device half4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, vec4<f16>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, vec4<f16>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant half4* u [[buffer(0)]], device half4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  half4 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:vec4<f16> = load %u
-    %x:vec4<f16> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index df46933..7fc7b21 100644
--- a/test/tint/buffer/uniform/types/vec4_f32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec4_f32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4* u;
+  device float4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, vec4<f32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, vec4<f32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant float4* u [[buffer(0)]], device float4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  float4 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:vec4<f32> = load %u
-    %x:vec4<f32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 3b61b9f..4708c30 100644
--- a/test/tint/buffer/uniform/types/vec4_i32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec4_i32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant int4* u;
+  device int4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, vec4<i32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, vec4<i32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant int4* u [[buffer(0)]], device int4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  int4 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:vec4<i32> = load %u
-    %x:vec4<i32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index b7c1bf2..2de3973 100644
--- a/test/tint/buffer/uniform/types/vec4_u32.wgsl.expected.ir.msl
+++ b/test/tint/buffer/uniform/types/vec4_u32.wgsl.expected.ir.msl
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant uint4* u;
+  device uint4* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, vec4<u32>, read> = var @binding_point(0, 0)
-  %s:ptr<storage, vec4<u32>, read_write> = var @binding_point(0, 1)
+kernel void tint_symbol(const constant uint4* u [[buffer(0)]], device uint4* s [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u, .s=s};
+  uint4 const x = (*tint_module_vars.u);
+  (*tint_module_vars.s) = x;
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:vec4<u32> = load %u
-    %x:vec4<u32> = let %4
-    store %s, %x
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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
index 144777b..20feeef 100644
--- a/test/tint/bug/chromium/1430309.wgsl.expected.ir.msl
+++ b/test/tint/bug/chromium/1430309.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct frexp_result_f32 {
@@ -9,16 +7,14 @@
   float fract;
   int exp;
 };
+struct tint_module_vars_struct {
+  thread frexp_result_f32* a;
+  thread frexp_result_f32_1* b;
+};
 
-thread frexp_result_f32 a = {};
-thread frexp_result_f32_1 b = frexp_result_f32_1{.fract=0.5f, .exp=1};
 fragment float4 tint_symbol() {
-  return float4(a.f, b.fract, 0.0f, 0.0f);
+  thread frexp_result_f32 a = {};
+  thread frexp_result_f32_1 b = frexp_result_f32_1{.fract=0.5f, .exp=1};
+  tint_module_vars_struct const tint_module_vars = {.a=(&a), .b=(&b)};
+  return float4((*tint_module_vars.a).f, (*tint_module_vars.b).fract, 0.0f, 0.0f);
 }
-program_source:11:25: error: program scope variable must reside in constant address space
-thread frexp_result_f32 a = {};
-                        ^
-program_source:12:27: error: program scope variable must reside in constant address space
-thread frexp_result_f32_1 b = frexp_result_f32_1{.fract=0.5f, .exp=1};
-                          ^
-
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
index 9def01d..93e2b199 100644
--- 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
@@ -1,39 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct UBO {
+  int dynamic_idx;
+};
+struct Result {
+  int out;
+};
+struct tint_module_vars_struct {
+  const constant UBO* ubo;
+  device Result* result;
+};
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: UBO = struct @align(4) {
-  dynamic_idx:i32 @offset(0)
+struct S {
+  tint_array<int, 64> data;
+};
+
+kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result};
+  S s = {};
+  (*tint_module_vars.result).out = s.data[(*tint_module_vars.ubo).dynamic_idx];
 }
-
-Result = struct @align(4) {
-  out:i32 @offset(0)
-}
-
-S = struct @align(4) {
-  data:array<i32, 64> @offset(0)
-}
-
-$B1: {  # 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: {
-    %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
index 4c59525..c572b13 100644
--- 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
@@ -1,39 +1,34 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct UBO {
+  int dynamic_idx;
+};
+struct Result {
+  int out;
+};
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: UBO = struct @align(4) {
-  dynamic_idx:i32 @offset(0)
+struct S {
+  tint_array<int, 64> data;
+};
+struct tint_module_vars_struct {
+  const constant UBO* ubo;
+  device Result* result;
+  thread S* s;
+};
+
+kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(1)]]) {
+  thread S s = {};
+  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result, .s=(&s)};
+  (*tint_module_vars.result).out = (*tint_module_vars.s).data[(*tint_module_vars.ubo).dynamic_idx];
 }
-
-Result = struct @align(4) {
-  out:i32 @offset(0)
-}
-
-S = struct @align(4) {
-  data:array<i32, 64> @offset(0)
-}
-
-$B1: {  # 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: {
-    %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
index a8f5a41..b4ba2a1 100644
--- 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
@@ -1,39 +1,33 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct UBO {
+  int dynamic_idx;
+};
+struct Result {
+  int out;
+};
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: UBO = struct @align(4) {
-  dynamic_idx:i32 @offset(0)
+struct SSBO {
+  tint_array<int, 4> data;
+};
+struct tint_module_vars_struct {
+  const constant UBO* ubo;
+  device Result* result;
+  device SSBO* ssbo;
+};
+
+kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(2)]], device SSBO* ssbo [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result, .ssbo=ssbo};
+  (*tint_module_vars.result).out = (*tint_module_vars.ssbo).data[(*tint_module_vars.ubo).dynamic_idx];
 }
-
-Result = struct @align(4) {
-  out:i32 @offset(0)
-}
-
-SSBO = struct @align(4) {
-  data:array<i32, 4> @offset(0)
-}
-
-$B1: {  # 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: {
-    %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
index e394af7..27a2233 100644
--- 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
@@ -1,35 +1,30 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: UBO = struct @align(16) {
-  data:array<vec4<i32>, 4> @offset(0)
-  dynamic_idx:i32 @offset(64)
+struct UBO {
+  tint_array<int4, 4> data;
+  int dynamic_idx;
+};
+struct Result {
+  int out;
+};
+struct tint_module_vars_struct {
+  const constant UBO* ubo;
+  device Result* result;
+};
+
+kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(2)]]) {
+  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result};
+  (*tint_module_vars.result).out = (*tint_module_vars.ubo).data[(*tint_module_vars.ubo).dynamic_idx][0u];
 }
-
-Result = struct @align(4) {
-  out:i32 @offset(0)
-}
-
-$B1: {  # 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: {
-    %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/write/function.wgsl.expected.ir.msl b/test/tint/bug/fxc/dyn_array_idx/write/function.wgsl.expected.ir.msl
index 3930e65..e6222b9 100644
--- 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
@@ -1,41 +1,34 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct UBO {
+  int dynamic_idx;
+};
+struct Result {
+  int out;
+};
+struct tint_module_vars_struct {
+  const constant UBO* ubo;
+  device Result* result;
+};
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: UBO = struct @align(4) {
-  dynamic_idx:i32 @offset(0)
+struct S {
+  tint_array<int, 64> data;
+};
+
+kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result};
+  S s = {};
+  s.data[(*tint_module_vars.ubo).dynamic_idx] = 1;
+  (*tint_module_vars.result).out = s.data[3];
 }
-
-Result = struct @align(4) {
-  out:i32 @offset(0)
-}
-
-S = struct @align(4) {
-  data:array<i32, 64> @offset(0)
-}
-
-$B1: {  # 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: {
-    %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
index 2e17591..ce9dbea 100644
--- 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
@@ -1,47 +1,37 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: UBO = struct @align(4) {
-  dynamic_idx:i32 @offset(0)
-}
+struct S {
+  tint_array<int, 64> data;
+};
+struct UBO {
+  int dynamic_idx;
+};
+struct Result {
+  int out;
+};
+struct tint_module_vars_struct {
+  const constant UBO* ubo;
+  device Result* result;
+};
 
-Result = struct @align(4) {
-  out:i32 @offset(0)
+void x(thread S* const p, tint_module_vars_struct tint_module_vars) {
+  (*p).data[(*tint_module_vars.ubo).dynamic_idx] = 1;
 }
-
-S = struct @align(4) {
-  data:array<i32, 64> @offset(0)
+kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result};
+  S s = {};
+  x((&s), tint_module_vars);
+  (*tint_module_vars.result).out = s.data[3];
 }
-
-$B1: {  # 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: {
-    %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: {
-    %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
index fac2d98..ddcdabe 100644
--- 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
@@ -1,41 +1,35 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct UBO {
+  int dynamic_idx;
+};
+struct Result {
+  int out;
+};
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: UBO = struct @align(4) {
-  dynamic_idx:i32 @offset(0)
+struct S {
+  tint_array<int, 64> data;
+};
+struct tint_module_vars_struct {
+  const constant UBO* ubo;
+  device Result* result;
+  thread S* s;
+};
+
+kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(1)]]) {
+  thread S s = {};
+  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result, .s=(&s)};
+  (*tint_module_vars.s).data[(*tint_module_vars.ubo).dynamic_idx] = 1;
+  (*tint_module_vars.result).out = (*tint_module_vars.s).data[3];
 }
-
-Result = struct @align(4) {
-  out:i32 @offset(0)
-}
-
-S = struct @align(4) {
-  data:array<i32, 64> @offset(0)
-}
-
-$B1: {  # 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: {
-    %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
index 573ffa1..a7bfe01 100644
--- 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
@@ -1,47 +1,38 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: UBO = struct @align(4) {
-  dynamic_idx:i32 @offset(0)
-}
+struct S {
+  tint_array<int, 64> data;
+};
+struct UBO {
+  int dynamic_idx;
+};
+struct Result {
+  int out;
+};
+struct tint_module_vars_struct {
+  const constant UBO* ubo;
+  device Result* result;
+  thread S* s;
+};
 
-Result = struct @align(4) {
-  out:i32 @offset(0)
+void x(thread S* const p, tint_module_vars_struct tint_module_vars) {
+  (*p).data[(*tint_module_vars.ubo).dynamic_idx] = 1;
 }
-
-S = struct @align(4) {
-  data:array<i32, 64> @offset(0)
+kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(1)]]) {
+  thread S s = {};
+  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result, .s=(&s)};
+  x(tint_module_vars.s, tint_module_vars);
+  (*tint_module_vars.result).out = (*tint_module_vars.s).data[3];
 }
-
-$B1: {  # 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: {
-    %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: {
-    %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
index d48f2c5..56f87ff 100644
--- 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
@@ -1,41 +1,34 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct UBO {
+  int dynamic_idx;
+};
+struct Result {
+  int out;
+};
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: UBO = struct @align(4) {
-  dynamic_idx:i32 @offset(0)
+struct SSBO {
+  tint_array<int, 4> data;
+};
+struct tint_module_vars_struct {
+  const constant UBO* ubo;
+  device Result* result;
+  device SSBO* ssbo;
+};
+
+kernel void f(const constant UBO* ubo [[buffer(0)]], device Result* result [[buffer(2)]], device SSBO* ssbo [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.ubo=ubo, .result=result, .ssbo=ssbo};
+  (*tint_module_vars.ssbo).data[(*tint_module_vars.ubo).dynamic_idx] = 1;
+  (*tint_module_vars.result).out = (*tint_module_vars.ssbo).data[3];
 }
-
-Result = struct @align(4) {
-  out:i32 @offset(0)
-}
-
-SSBO = struct @align(4) {
-  data:array<i32, 4> @offset(0)
-}
-
-$B1: {  # 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: {
-    %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/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
index 1896e60..bc75e3e 100644
--- 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
@@ -1,13 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2* v2f;
+  thread int3* v3i;
+  thread uint4* v4u;
+  thread bool2* v2b;
+};
 
-thread float2 v2f = 0.0f;
-thread int3 v3i = 0;
-thread uint4 v4u = 0u;
-thread bool2 v2b = false;
-void foo() {
+void foo(tint_module_vars_struct tint_module_vars) {
   {
     int i = 0;
     while(true) {
@@ -15,16 +15,21 @@
       } else {
         break;
       }
-      v2f[i] = 1.0f;
-      v3i[i] = 1;
-      v4u[i] = 1u;
-      v2b[i] = true;
+      (*tint_module_vars.v2f)[i] = 1.0f;
+      (*tint_module_vars.v3i)[i] = 1;
+      (*tint_module_vars.v4u)[i] = 1u;
+      (*tint_module_vars.v2b)[i] = true;
       i = (i + 1);
       continue;
     }
   }
 }
 kernel void tint_symbol() {
+  thread float2 v2f = 0.0f;
+  thread int3 v3i = 0;
+  thread uint4 v4u = 0u;
+  thread bool2 v2b = false;
+  tint_module_vars_struct const tint_module_vars = {.v2f=(&v2f), .v3i=(&v3i), .v4u=(&v4u), .v2b=(&v2b)};
   {
     int i = 0;
     while(true) {
@@ -32,22 +37,9 @@
       } else {
         break;
       }
-      foo();
+      foo(tint_module_vars);
       i = (i + 1);
       continue;
     }
   }
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float2 v2f = 0.0f;
-              ^
-program_source:5:13: error: program scope variable must reside in constant address space
-thread int3 v3i = 0;
-            ^
-program_source:6:14: error: program scope variable must reside in constant address space
-thread uint4 v4u = 0u;
-             ^
-program_source:7:14: error: program scope variable must reside in constant address space
-thread bool2 v2b = false;
-             ^
-
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
index 56d2875..eddd698 100644
--- 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
@@ -1,20 +1,25 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2* v2f;
+  thread int3* v3i;
+  thread uint4* v4u;
+  thread bool2* v2b;
+};
 
-thread float2 v2f = 0.0f;
-thread int3 v3i = 0;
-thread uint4 v4u = 0u;
-thread bool2 v2b = false;
-void foo() {
+void foo(tint_module_vars_struct tint_module_vars) {
   int i = 0;
-  v2f[i] = 1.0f;
-  v3i[i] = 1;
-  v4u[i] = 1u;
-  v2b[i] = true;
+  (*tint_module_vars.v2f)[i] = 1.0f;
+  (*tint_module_vars.v3i)[i] = 1;
+  (*tint_module_vars.v4u)[i] = 1u;
+  (*tint_module_vars.v2b)[i] = true;
 }
 kernel void tint_symbol() {
+  thread float2 v2f = 0.0f;
+  thread int3 v3i = 0;
+  thread uint4 v4u = 0u;
+  thread bool2 v2b = false;
+  tint_module_vars_struct const tint_module_vars = {.v2f=(&v2f), .v3i=(&v3i), .v4u=(&v4u), .v2b=(&v2b)};
   {
     int i = 0;
     while(true) {
@@ -22,22 +27,9 @@
       } else {
         break;
       }
-      foo();
+      foo(tint_module_vars);
       i = (i + 1);
       continue;
     }
   }
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float2 v2f = 0.0f;
-              ^
-program_source:5:13: error: program scope variable must reside in constant address space
-thread int3 v3i = 0;
-            ^
-program_source:6:14: error: program scope variable must reside in constant address space
-thread uint4 v4u = 0u;
-             ^
-program_source:7:14: error: program scope variable must reside in constant address space
-thread bool2 v2b = false;
-             ^
-
diff --git a/test/tint/bug/tint/1086.wgsl.expected.ir.msl b/test/tint/bug/tint/1086.wgsl.expected.ir.msl
index 37f69a0..91474dc 100644
--- a/test/tint/bug/tint/1086.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1086.wgsl.expected.ir.msl
@@ -1,25 +1,17 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* v;
+};
 
-thread float v = 0.0f;
 void x(thread float* const p) {
-  p = 0.0f;
+  (*p) = 0.0f;
 }
-void g() {
-  x(v);
+void g(tint_module_vars_struct tint_module_vars) {
+  x(tint_module_vars.v);
 }
 fragment void f() {
-  g();
+  thread float v = 0.0f;
+  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
+  g(tint_module_vars);
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float v = 0.0f;
-             ^
-program_source:6:5: error: cannot assign to variable 'p' with const-qualified type 'float *const'
-  p = 0.0f;
-  ~ ^
-program_source:5:28: note: variable 'p' declared const here
-void x(thread float* const p) {
-       ~~~~~~~~~~~~~~~~~~~~^
-
diff --git a/test/tint/bug/tint/1136.wgsl.expected.ir.msl b/test/tint/bug/tint/1136.wgsl.expected.ir.msl
index 27aafe7..27ed7f9 100644
--- a/test/tint/bug/tint/1136.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1136.wgsl.expected.ir.msl
@@ -1,28 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct Buffer {
+  uint data;
+};
+struct tint_module_vars_struct {
+  device Buffer* tint_symbol;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Buffer = struct @align(4) {
-  data:u32 @offset(0)
+void tint_symbol_1(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.tint_symbol).data = ((*tint_module_vars.tint_symbol).data + 1u);
 }
-
-$B1: {  # root
-  %tint_symbol:ptr<storage, Buffer, read_write> = var @binding_point(0, 0)
-}
-
-%tint_symbol_1 = func():void {
-  $B2: {
-    %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/1321.wgsl.expected.ir.msl b/test/tint/bug/tint/1321.wgsl.expected.ir.msl
index 3304981..a7c5832 100644
--- a/test/tint/bug/tint/1321.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1321.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -21,17 +19,10 @@
 fragment void tint_symbol() {
   tint_array<float, 4> arr = tint_array<float, 4>{};
   {
-    thread float* const a = arr[foo()];
+    thread float* const a = (&arr[foo()]);
     while(true) {
-      float const x = a;
+      float const x = (*a);
       break;
     }
   }
 }
-program_source:22:25: error: cannot initialize a variable of type 'float *const' with an lvalue of type 'float'
-    thread float* const a = arr[foo()];
-                        ^   ~~~~~~~~~~
-program_source:24:19: error: cannot initialize a variable of type 'const float' with an lvalue of type 'float *const'
-      float const x = a;
-                  ^   ~
-
diff --git a/test/tint/bug/tint/1369.wgsl.expected.ir.msl b/test/tint/bug/tint/1369.wgsl.expected.ir.msl
index 9934540..7aa3f8d 100644
--- a/test/tint/bug/tint/1369.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1369.wgsl.expected.ir.msl
@@ -1,27 +1,19 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* continue_execution;
+};
 
-thread bool continue_execution = true;
-bool call_discard() {
-  continue_execution = false;
+bool call_discard(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.continue_execution) = false;
   return true;
 }
 fragment void f() {
-  bool v = call_discard();
+  thread bool continue_execution = true;
+  tint_module_vars_struct const tint_module_vars = {.continue_execution=(&continue_execution)};
+  bool v = call_discard(tint_module_vars);
   bool also_unreachable = false;
-  if (!(continue_execution)) {
+  if (!((*tint_module_vars.continue_execution))) {
     discard_fragment();
   }
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool continue_execution = true;
-            ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  bool v = call_discard();
-       ^
-program_source:11:8: warning: unused variable 'also_unreachable' [-Wunused-variable]
-  bool also_unreachable = false;
-       ^
-
diff --git a/test/tint/bug/tint/1385.wgsl.expected.ir.msl b/test/tint/bug/tint/1385.wgsl.expected.ir.msl
index 4eab5b4..49062f4 100644
--- a/test/tint/bug/tint/1385.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1385.wgsl.expected.ir.msl
@@ -1,27 +1,25 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %data:ptr<storage, array<i32>, read> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  const device tint_array<int, 1>* data;
+};
 
-%foo = func():i32 {
-  $B2: {
-    %3:ptr<storage, i32, read> = access %data, 0i
-    %4:i32 = load %3
-    ret %4
-  }
+int foo(tint_module_vars_struct tint_module_vars) {
+  return (*tint_module_vars.data)[0];
 }
-%tint_symbol = @compute @workgroup_size(16, 16, 1) func():void {
-  $B3: {
-    %6:i32 = call %foo
-    ret
-  }
+kernel void tint_symbol(const device tint_array<int, 1>* data [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.data=data};
+  foo(tint_module_vars);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 74d387f..0f0cce6 100644
--- a/test/tint/bug/tint/1509.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1509.wgsl.expected.ir.msl
@@ -1,5013 +1,3013 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* v0;
+  thread uint* v1;
+  thread uint* v2;
+  thread uint* v3;
+  thread uint* v4;
+  thread uint* v5;
+  thread uint* v6;
+  thread uint* v7;
+  thread uint* v8;
+  thread uint* v9;
+  thread uint* v10;
+  thread uint* v11;
+  thread uint* v12;
+  thread uint* v13;
+  thread uint* v14;
+  thread uint* v15;
+  thread uint* v16;
+  thread uint* v17;
+  thread uint* v18;
+  thread uint* v19;
+  thread uint* v20;
+  thread uint* v21;
+  thread uint* v22;
+  thread uint* v23;
+  thread uint* v24;
+  thread uint* v25;
+  thread uint* v26;
+  thread uint* v27;
+  thread uint* v28;
+  thread uint* v29;
+  thread uint* v30;
+  thread uint* v31;
+  thread uint* v32;
+  thread uint* v33;
+  thread uint* v34;
+  thread uint* v35;
+  thread uint* v36;
+  thread uint* v37;
+  thread uint* v38;
+  thread uint* v39;
+  thread uint* v40;
+  thread uint* v41;
+  thread uint* v42;
+  thread uint* v43;
+  thread uint* v44;
+  thread uint* v45;
+  thread uint* v46;
+  thread uint* v47;
+  thread uint* v48;
+  thread uint* v49;
+  thread uint* v50;
+  thread uint* v51;
+  thread uint* v52;
+  thread uint* v53;
+  thread uint* v54;
+  thread uint* v55;
+  thread uint* v56;
+  thread uint* v57;
+  thread uint* v58;
+  thread uint* v59;
+  thread uint* v60;
+  thread uint* v61;
+  thread uint* v62;
+  thread uint* v63;
+  thread uint* v64;
+  thread uint* v65;
+  thread uint* v66;
+  thread uint* v67;
+  thread uint* v68;
+  thread uint* v69;
+  thread uint* v70;
+  thread uint* v71;
+  thread uint* v72;
+  thread uint* v73;
+  thread uint* v74;
+  thread uint* v75;
+  thread uint* v76;
+  thread uint* v77;
+  thread uint* v78;
+  thread uint* v79;
+  thread uint* v80;
+  thread uint* v81;
+  thread uint* v82;
+  thread uint* v83;
+  thread uint* v84;
+  thread uint* v85;
+  thread uint* v86;
+  thread uint* v87;
+  thread uint* v88;
+  thread uint* v89;
+  thread uint* v90;
+  thread uint* v91;
+  thread uint* v92;
+  thread uint* v93;
+  thread uint* v94;
+  thread uint* v95;
+  thread uint* v96;
+  thread uint* v97;
+  thread uint* v98;
+  thread uint* v99;
+  thread uint* v100;
+  thread uint* v101;
+  thread uint* v102;
+  thread uint* v103;
+  thread uint* v104;
+  thread uint* v105;
+  thread uint* v106;
+  thread uint* v107;
+  thread uint* v108;
+  thread uint* v109;
+  thread uint* v110;
+  thread uint* v111;
+  thread uint* v112;
+  thread uint* v113;
+  thread uint* v114;
+  thread uint* v115;
+  thread uint* v116;
+  thread uint* v117;
+  thread uint* v118;
+  thread uint* v119;
+  thread uint* v120;
+  thread uint* v121;
+  thread uint* v122;
+  thread uint* v123;
+  thread uint* v124;
+  thread uint* v125;
+  thread uint* v126;
+  thread uint* v127;
+  thread uint* v128;
+  thread uint* v129;
+  thread uint* v130;
+  thread uint* v131;
+  thread uint* v132;
+  thread uint* v133;
+  thread uint* v134;
+  thread uint* v135;
+  thread uint* v136;
+  thread uint* v137;
+  thread uint* v138;
+  thread uint* v139;
+  thread uint* v140;
+  thread uint* v141;
+  thread uint* v142;
+  thread uint* v143;
+  thread uint* v144;
+  thread uint* v145;
+  thread uint* v146;
+  thread uint* v147;
+  thread uint* v148;
+  thread uint* v149;
+  thread uint* v150;
+  thread uint* v151;
+  thread uint* v152;
+  thread uint* v153;
+  thread uint* v154;
+  thread uint* v155;
+  thread uint* v156;
+  thread uint* v157;
+  thread uint* v158;
+  thread uint* v159;
+  thread uint* v160;
+  thread uint* v161;
+  thread uint* v162;
+  thread uint* v163;
+  thread uint* v164;
+  thread uint* v165;
+  thread uint* v166;
+  thread uint* v167;
+  thread uint* v168;
+  thread uint* v169;
+  thread uint* v170;
+  thread uint* v171;
+  thread uint* v172;
+  thread uint* v173;
+  thread uint* v174;
+  thread uint* v175;
+  thread uint* v176;
+  thread uint* v177;
+  thread uint* v178;
+  thread uint* v179;
+  thread uint* v180;
+  thread uint* v181;
+  thread uint* v182;
+  thread uint* v183;
+  thread uint* v184;
+  thread uint* v185;
+  thread uint* v186;
+  thread uint* v187;
+  thread uint* v188;
+  thread uint* v189;
+  thread uint* v190;
+  thread uint* v191;
+  thread uint* v192;
+  thread uint* v193;
+  thread uint* v194;
+  thread uint* v195;
+  thread uint* v196;
+  thread uint* v197;
+  thread uint* v198;
+  thread uint* v199;
+  thread uint* v200;
+  thread uint* v201;
+  thread uint* v202;
+  thread uint* v203;
+  thread uint* v204;
+  thread uint* v205;
+  thread uint* v206;
+  thread uint* v207;
+  thread uint* v208;
+  thread uint* v209;
+  thread uint* v210;
+  thread uint* v211;
+  thread uint* v212;
+  thread uint* v213;
+  thread uint* v214;
+  thread uint* v215;
+  thread uint* v216;
+  thread uint* v217;
+  thread uint* v218;
+  thread uint* v219;
+  thread uint* v220;
+  thread uint* v221;
+  thread uint* v222;
+  thread uint* v223;
+  thread uint* v224;
+  thread uint* v225;
+  thread uint* v226;
+  thread uint* v227;
+  thread uint* v228;
+  thread uint* v229;
+  thread uint* v230;
+  thread uint* v231;
+  thread uint* v232;
+  thread uint* v233;
+  thread uint* v234;
+  thread uint* v235;
+  thread uint* v236;
+  thread uint* v237;
+  thread uint* v238;
+  thread uint* v239;
+  thread uint* v240;
+  thread uint* v241;
+  thread uint* v242;
+  thread uint* v243;
+  thread uint* v244;
+  thread uint* v245;
+  thread uint* v246;
+  thread uint* v247;
+  thread uint* v248;
+  thread uint* v249;
+  thread uint* v250;
+  thread uint* v251;
+  thread uint* v252;
+  thread uint* v253;
+  thread uint* v254;
+  thread uint* v255;
+  thread uint* v256;
+  thread uint* v257;
+  thread uint* v258;
+  thread uint* v259;
+  thread uint* v260;
+  thread uint* v261;
+  thread uint* v262;
+  thread uint* v263;
+  thread uint* v264;
+  thread uint* v265;
+  thread uint* v266;
+  thread uint* v267;
+  thread uint* v268;
+  thread uint* v269;
+  thread uint* v270;
+  thread uint* v271;
+  thread uint* v272;
+  thread uint* v273;
+  thread uint* v274;
+  thread uint* v275;
+  thread uint* v276;
+  thread uint* v277;
+  thread uint* v278;
+  thread uint* v279;
+  thread uint* v280;
+  thread uint* v281;
+  thread uint* v282;
+  thread uint* v283;
+  thread uint* v284;
+  thread uint* v285;
+  thread uint* v286;
+  thread uint* v287;
+  thread uint* v288;
+  thread uint* v289;
+  thread uint* v290;
+  thread uint* v291;
+  thread uint* v292;
+  thread uint* v293;
+  thread uint* v294;
+  thread uint* v295;
+  thread uint* v296;
+  thread uint* v297;
+  thread uint* v298;
+  thread uint* v299;
+  thread uint* v300;
+  thread uint* v301;
+  thread uint* v302;
+  thread uint* v303;
+  thread uint* v304;
+  thread uint* v305;
+  thread uint* v306;
+  thread uint* v307;
+  thread uint* v308;
+  thread uint* v309;
+  thread uint* v310;
+  thread uint* v311;
+  thread uint* v312;
+  thread uint* v313;
+  thread uint* v314;
+  thread uint* v315;
+  thread uint* v316;
+  thread uint* v317;
+  thread uint* v318;
+  thread uint* v319;
+  thread uint* v320;
+  thread uint* v321;
+  thread uint* v322;
+  thread uint* v323;
+  thread uint* v324;
+  thread uint* v325;
+  thread uint* v326;
+  thread uint* v327;
+  thread uint* v328;
+  thread uint* v329;
+  thread uint* v330;
+  thread uint* v331;
+  thread uint* v332;
+  thread uint* v333;
+  thread uint* v334;
+  thread uint* v335;
+  thread uint* v336;
+  thread uint* v337;
+  thread uint* v338;
+  thread uint* v339;
+  thread uint* v340;
+  thread uint* v341;
+  thread uint* v342;
+  thread uint* v343;
+  thread uint* v344;
+  thread uint* v345;
+  thread uint* v346;
+  thread uint* v347;
+  thread uint* v348;
+  thread uint* v349;
+  thread uint* v350;
+  thread uint* v351;
+  thread uint* v352;
+  thread uint* v353;
+  thread uint* v354;
+  thread uint* v355;
+  thread uint* v356;
+  thread uint* v357;
+  thread uint* v358;
+  thread uint* v359;
+  thread uint* v360;
+  thread uint* v361;
+  thread uint* v362;
+  thread uint* v363;
+  thread uint* v364;
+  thread uint* v365;
+  thread uint* v366;
+  thread uint* v367;
+  thread uint* v368;
+  thread uint* v369;
+  thread uint* v370;
+  thread uint* v371;
+  thread uint* v372;
+  thread uint* v373;
+  thread uint* v374;
+  thread uint* v375;
+  thread uint* v376;
+  thread uint* v377;
+  thread uint* v378;
+  thread uint* v379;
+  thread uint* v380;
+  thread uint* v381;
+  thread uint* v382;
+  thread uint* v383;
+  thread uint* v384;
+  thread uint* v385;
+  thread uint* v386;
+  thread uint* v387;
+  thread uint* v388;
+  thread uint* v389;
+  thread uint* v390;
+  thread uint* v391;
+  thread uint* v392;
+  thread uint* v393;
+  thread uint* v394;
+  thread uint* v395;
+  thread uint* v396;
+  thread uint* v397;
+  thread uint* v398;
+  thread uint* v399;
+  thread uint* v400;
+  thread uint* v401;
+  thread uint* v402;
+  thread uint* v403;
+  thread uint* v404;
+  thread uint* v405;
+  thread uint* v406;
+  thread uint* v407;
+  thread uint* v408;
+  thread uint* v409;
+  thread uint* v410;
+  thread uint* v411;
+  thread uint* v412;
+  thread uint* v413;
+  thread uint* v414;
+  thread uint* v415;
+  thread uint* v416;
+  thread uint* v417;
+  thread uint* v418;
+  thread uint* v419;
+  thread uint* v420;
+  thread uint* v421;
+  thread uint* v422;
+  thread uint* v423;
+  thread uint* v424;
+  thread uint* v425;
+  thread uint* v426;
+  thread uint* v427;
+  thread uint* v428;
+  thread uint* v429;
+  thread uint* v430;
+  thread uint* v431;
+  thread uint* v432;
+  thread uint* v433;
+  thread uint* v434;
+  thread uint* v435;
+  thread uint* v436;
+  thread uint* v437;
+  thread uint* v438;
+  thread uint* v439;
+  thread uint* v440;
+  thread uint* v441;
+  thread uint* v442;
+  thread uint* v443;
+  thread uint* v444;
+  thread uint* v445;
+  thread uint* v446;
+  thread uint* v447;
+  thread uint* v448;
+  thread uint* v449;
+  thread uint* v450;
+  thread uint* v451;
+  thread uint* v452;
+  thread uint* v453;
+  thread uint* v454;
+  thread uint* v455;
+  thread uint* v456;
+  thread uint* v457;
+  thread uint* v458;
+  thread uint* v459;
+  thread uint* v460;
+  thread uint* v461;
+  thread uint* v462;
+  thread uint* v463;
+  thread uint* v464;
+  thread uint* v465;
+  thread uint* v466;
+  thread uint* v467;
+  thread uint* v468;
+  thread uint* v469;
+  thread uint* v470;
+  thread uint* v471;
+  thread uint* v472;
+  thread uint* v473;
+  thread uint* v474;
+  thread uint* v475;
+  thread uint* v476;
+  thread uint* v477;
+  thread uint* v478;
+  thread uint* v479;
+  thread uint* v480;
+  thread uint* v481;
+  thread uint* v482;
+  thread uint* v483;
+  thread uint* v484;
+  thread uint* v485;
+  thread uint* v486;
+  thread uint* v487;
+  thread uint* v488;
+  thread uint* v489;
+  thread uint* v490;
+  thread uint* v491;
+  thread uint* v492;
+  thread uint* v493;
+  thread uint* v494;
+  thread uint* v495;
+  thread uint* v496;
+  thread uint* v497;
+  thread uint* v498;
+  thread uint* v499;
+  thread uint* v500;
+  thread uint* v501;
+  thread uint* v502;
+  thread uint* v503;
+  thread uint* v504;
+  thread uint* v505;
+  thread uint* v506;
+  thread uint* v507;
+  thread uint* v508;
+  thread uint* v509;
+  thread uint* v510;
+  thread uint* v511;
+  thread uint* v512;
+  thread uint* v513;
+  thread uint* v514;
+  thread uint* v515;
+  thread uint* v516;
+  thread uint* v517;
+  thread uint* v518;
+  thread uint* v519;
+  thread uint* v520;
+  thread uint* v521;
+  thread uint* v522;
+  thread uint* v523;
+  thread uint* v524;
+  thread uint* v525;
+  thread uint* v526;
+  thread uint* v527;
+  thread uint* v528;
+  thread uint* v529;
+  thread uint* v530;
+  thread uint* v531;
+  thread uint* v532;
+  thread uint* v533;
+  thread uint* v534;
+  thread uint* v535;
+  thread uint* v536;
+  thread uint* v537;
+  thread uint* v538;
+  thread uint* v539;
+  thread uint* v540;
+  thread uint* v541;
+  thread uint* v542;
+  thread uint* v543;
+  thread uint* v544;
+  thread uint* v545;
+  thread uint* v546;
+  thread uint* v547;
+  thread uint* v548;
+  thread uint* v549;
+  thread uint* v550;
+  thread uint* v551;
+  thread uint* v552;
+  thread uint* v553;
+  thread uint* v554;
+  thread uint* v555;
+  thread uint* v556;
+  thread uint* v557;
+  thread uint* v558;
+  thread uint* v559;
+  thread uint* v560;
+  thread uint* v561;
+  thread uint* v562;
+  thread uint* v563;
+  thread uint* v564;
+  thread uint* v565;
+  thread uint* v566;
+  thread uint* v567;
+  thread uint* v568;
+  thread uint* v569;
+  thread uint* v570;
+  thread uint* v571;
+  thread uint* v572;
+  thread uint* v573;
+  thread uint* v574;
+  thread uint* v575;
+  thread uint* v576;
+  thread uint* v577;
+  thread uint* v578;
+  thread uint* v579;
+  thread uint* v580;
+  thread uint* v581;
+  thread uint* v582;
+  thread uint* v583;
+  thread uint* v584;
+  thread uint* v585;
+  thread uint* v586;
+  thread uint* v587;
+  thread uint* v588;
+  thread uint* v589;
+  thread uint* v590;
+  thread uint* v591;
+  thread uint* v592;
+  thread uint* v593;
+  thread uint* v594;
+  thread uint* v595;
+  thread uint* v596;
+  thread uint* v597;
+  thread uint* v598;
+  thread uint* v599;
+  thread uint* v600;
+  thread uint* v601;
+  thread uint* v602;
+  thread uint* v603;
+  thread uint* v604;
+  thread uint* v605;
+  thread uint* v606;
+  thread uint* v607;
+  thread uint* v608;
+  thread uint* v609;
+  thread uint* v610;
+  thread uint* v611;
+  thread uint* v612;
+  thread uint* v613;
+  thread uint* v614;
+  thread uint* v615;
+  thread uint* v616;
+  thread uint* v617;
+  thread uint* v618;
+  thread uint* v619;
+  thread uint* v620;
+  thread uint* v621;
+  thread uint* v622;
+  thread uint* v623;
+  thread uint* v624;
+  thread uint* v625;
+  thread uint* v626;
+  thread uint* v627;
+  thread uint* v628;
+  thread uint* v629;
+  thread uint* v630;
+  thread uint* v631;
+  thread uint* v632;
+  thread uint* v633;
+  thread uint* v634;
+  thread uint* v635;
+  thread uint* v636;
+  thread uint* v637;
+  thread uint* v638;
+  thread uint* v639;
+  thread uint* v640;
+  thread uint* v641;
+  thread uint* v642;
+  thread uint* v643;
+  thread uint* v644;
+  thread uint* v645;
+  thread uint* v646;
+  thread uint* v647;
+  thread uint* v648;
+  thread uint* v649;
+  thread uint* v650;
+  thread uint* v651;
+  thread uint* v652;
+  thread uint* v653;
+  thread uint* v654;
+  thread uint* v655;
+  thread uint* v656;
+  thread uint* v657;
+  thread uint* v658;
+  thread uint* v659;
+  thread uint* v660;
+  thread uint* v661;
+  thread uint* v662;
+  thread uint* v663;
+  thread uint* v664;
+  thread uint* v665;
+  thread uint* v666;
+  thread uint* v667;
+  thread uint* v668;
+  thread uint* v669;
+  thread uint* v670;
+  thread uint* v671;
+  thread uint* v672;
+  thread uint* v673;
+  thread uint* v674;
+  thread uint* v675;
+  thread uint* v676;
+  thread uint* v677;
+  thread uint* v678;
+  thread uint* v679;
+  thread uint* v680;
+  thread uint* v681;
+  thread uint* v682;
+  thread uint* v683;
+  thread uint* v684;
+  thread uint* v685;
+  thread uint* v686;
+  thread uint* v687;
+  thread uint* v688;
+  thread uint* v689;
+  thread uint* v690;
+  thread uint* v691;
+  thread uint* v692;
+  thread uint* v693;
+  thread uint* v694;
+  thread uint* v695;
+  thread uint* v696;
+  thread uint* v697;
+  thread uint* v698;
+  thread uint* v699;
+  thread uint* v700;
+  thread uint* v701;
+  thread uint* v702;
+  thread uint* v703;
+  thread uint* v704;
+  thread uint* v705;
+  thread uint* v706;
+  thread uint* v707;
+  thread uint* v708;
+  thread uint* v709;
+  thread uint* v710;
+  thread uint* v711;
+  thread uint* v712;
+  thread uint* v713;
+  thread uint* v714;
+  thread uint* v715;
+  thread uint* v716;
+  thread uint* v717;
+  thread uint* v718;
+  thread uint* v719;
+  thread uint* v720;
+  thread uint* v721;
+  thread uint* v722;
+  thread uint* v723;
+  thread uint* v724;
+  thread uint* v725;
+  thread uint* v726;
+  thread uint* v727;
+  thread uint* v728;
+  thread uint* v729;
+  thread uint* v730;
+  thread uint* v731;
+  thread uint* v732;
+  thread uint* v733;
+  thread uint* v734;
+  thread uint* v735;
+  thread uint* v736;
+  thread uint* v737;
+  thread uint* v738;
+  thread uint* v739;
+  thread uint* v740;
+  thread uint* v741;
+  thread uint* v742;
+  thread uint* v743;
+  thread uint* v744;
+  thread uint* v745;
+  thread uint* v746;
+  thread uint* v747;
+  thread uint* v748;
+  thread uint* v749;
+  thread uint* v750;
+  thread uint* v751;
+  thread uint* v752;
+  thread uint* v753;
+  thread uint* v754;
+  thread uint* v755;
+  thread uint* v756;
+  thread uint* v757;
+  thread uint* v758;
+  thread uint* v759;
+  thread uint* v760;
+  thread uint* v761;
+  thread uint* v762;
+  thread uint* v763;
+  thread uint* v764;
+  thread uint* v765;
+  thread uint* v766;
+  thread uint* v767;
+  thread uint* v768;
+  thread uint* v769;
+  thread uint* v770;
+  thread uint* v771;
+  thread uint* v772;
+  thread uint* v773;
+  thread uint* v774;
+  thread uint* v775;
+  thread uint* v776;
+  thread uint* v777;
+  thread uint* v778;
+  thread uint* v779;
+  thread uint* v780;
+  thread uint* v781;
+  thread uint* v782;
+  thread uint* v783;
+  thread uint* v784;
+  thread uint* v785;
+  thread uint* v786;
+  thread uint* v787;
+  thread uint* v788;
+  thread uint* v789;
+  thread uint* v790;
+  thread uint* v791;
+  thread uint* v792;
+  thread uint* v793;
+  thread uint* v794;
+  thread uint* v795;
+  thread uint* v796;
+  thread uint* v797;
+  thread uint* v798;
+  thread uint* v799;
+  thread uint* v800;
+  thread uint* v801;
+  thread uint* v802;
+  thread uint* v803;
+  thread uint* v804;
+  thread uint* v805;
+  thread uint* v806;
+  thread uint* v807;
+  thread uint* v808;
+  thread uint* v809;
+  thread uint* v810;
+  thread uint* v811;
+  thread uint* v812;
+  thread uint* v813;
+  thread uint* v814;
+  thread uint* v815;
+  thread uint* v816;
+  thread uint* v817;
+  thread uint* v818;
+  thread uint* v819;
+  thread uint* v820;
+  thread uint* v821;
+  thread uint* v822;
+  thread uint* v823;
+  thread uint* v824;
+  thread uint* v825;
+  thread uint* v826;
+  thread uint* v827;
+  thread uint* v828;
+  thread uint* v829;
+  thread uint* v830;
+  thread uint* v831;
+  thread uint* v832;
+  thread uint* v833;
+  thread uint* v834;
+  thread uint* v835;
+  thread uint* v836;
+  thread uint* v837;
+  thread uint* v838;
+  thread uint* v839;
+  thread uint* v840;
+  thread uint* v841;
+  thread uint* v842;
+  thread uint* v843;
+  thread uint* v844;
+  thread uint* v845;
+  thread uint* v846;
+  thread uint* v847;
+  thread uint* v848;
+  thread uint* v849;
+  thread uint* v850;
+  thread uint* v851;
+  thread uint* v852;
+  thread uint* v853;
+  thread uint* v854;
+  thread uint* v855;
+  thread uint* v856;
+  thread uint* v857;
+  thread uint* v858;
+  thread uint* v859;
+  thread uint* v860;
+  thread uint* v861;
+  thread uint* v862;
+  thread uint* v863;
+  thread uint* v864;
+  thread uint* v865;
+  thread uint* v866;
+  thread uint* v867;
+  thread uint* v868;
+  thread uint* v869;
+  thread uint* v870;
+  thread uint* v871;
+  thread uint* v872;
+  thread uint* v873;
+  thread uint* v874;
+  thread uint* v875;
+  thread uint* v876;
+  thread uint* v877;
+  thread uint* v878;
+  thread uint* v879;
+  thread uint* v880;
+  thread uint* v881;
+  thread uint* v882;
+  thread uint* v883;
+  thread uint* v884;
+  thread uint* v885;
+  thread uint* v886;
+  thread uint* v887;
+  thread uint* v888;
+  thread uint* v889;
+  thread uint* v890;
+  thread uint* v891;
+  thread uint* v892;
+  thread uint* v893;
+  thread uint* v894;
+  thread uint* v895;
+  thread uint* v896;
+  thread uint* v897;
+  thread uint* v898;
+  thread uint* v899;
+  thread uint* v900;
+  thread uint* v901;
+  thread uint* v902;
+  thread uint* v903;
+  thread uint* v904;
+  thread uint* v905;
+  thread uint* v906;
+  thread uint* v907;
+  thread uint* v908;
+  thread uint* v909;
+  thread uint* v910;
+  thread uint* v911;
+  thread uint* v912;
+  thread uint* v913;
+  thread uint* v914;
+  thread uint* v915;
+  thread uint* v916;
+  thread uint* v917;
+  thread uint* v918;
+  thread uint* v919;
+  thread uint* v920;
+  thread uint* v921;
+  thread uint* v922;
+  thread uint* v923;
+  thread uint* v924;
+  thread uint* v925;
+  thread uint* v926;
+  thread uint* v927;
+  thread uint* v928;
+  thread uint* v929;
+  thread uint* v930;
+  thread uint* v931;
+  thread uint* v932;
+  thread uint* v933;
+  thread uint* v934;
+  thread uint* v935;
+  thread uint* v936;
+  thread uint* v937;
+  thread uint* v938;
+  thread uint* v939;
+  thread uint* v940;
+  thread uint* v941;
+  thread uint* v942;
+  thread uint* v943;
+  thread uint* v944;
+  thread uint* v945;
+  thread uint* v946;
+  thread uint* v947;
+  thread uint* v948;
+  thread uint* v949;
+  thread uint* v950;
+  thread uint* v951;
+  thread uint* v952;
+  thread uint* v953;
+  thread uint* v954;
+  thread uint* v955;
+  thread uint* v956;
+  thread uint* v957;
+  thread uint* v958;
+  thread uint* v959;
+  thread uint* v960;
+  thread uint* v961;
+  thread uint* v962;
+  thread uint* v963;
+  thread uint* v964;
+  thread uint* v965;
+  thread uint* v966;
+  thread uint* v967;
+  thread uint* v968;
+  thread uint* v969;
+  thread uint* v970;
+  thread uint* v971;
+  thread uint* v972;
+  thread uint* v973;
+  thread uint* v974;
+  thread uint* v975;
+  thread uint* v976;
+  thread uint* v977;
+  thread uint* v978;
+  thread uint* v979;
+  thread uint* v980;
+  thread uint* v981;
+  thread uint* v982;
+  thread uint* v983;
+  thread uint* v984;
+  thread uint* v985;
+  thread uint* v986;
+  thread uint* v987;
+  thread uint* v988;
+  thread uint* v989;
+  thread uint* v990;
+  thread uint* v991;
+  thread uint* v992;
+  thread uint* v993;
+  thread uint* v994;
+  thread uint* v995;
+  thread uint* v996;
+  thread uint* v997;
+  thread uint* v998;
+  thread uint* v999;
+};
 
-thread uint v0 = 0u;
-thread uint v1 = 0u;
-thread uint v2 = 0u;
-thread uint v3 = 0u;
-thread uint v4 = 0u;
-thread uint v5 = 0u;
-thread uint v6 = 0u;
-thread uint v7 = 0u;
-thread uint v8 = 0u;
-thread uint v9 = 0u;
-thread uint v10 = 0u;
-thread uint v11 = 0u;
-thread uint v12 = 0u;
-thread uint v13 = 0u;
-thread uint v14 = 0u;
-thread uint v15 = 0u;
-thread uint v16 = 0u;
-thread uint v17 = 0u;
-thread uint v18 = 0u;
-thread uint v19 = 0u;
-thread uint v20 = 0u;
-thread uint v21 = 0u;
-thread uint v22 = 0u;
-thread uint v23 = 0u;
-thread uint v24 = 0u;
-thread uint v25 = 0u;
-thread uint v26 = 0u;
-thread uint v27 = 0u;
-thread uint v28 = 0u;
-thread uint v29 = 0u;
-thread uint v30 = 0u;
-thread uint v31 = 0u;
-thread uint v32 = 0u;
-thread uint v33 = 0u;
-thread uint v34 = 0u;
-thread uint v35 = 0u;
-thread uint v36 = 0u;
-thread uint v37 = 0u;
-thread uint v38 = 0u;
-thread uint v39 = 0u;
-thread uint v40 = 0u;
-thread uint v41 = 0u;
-thread uint v42 = 0u;
-thread uint v43 = 0u;
-thread uint v44 = 0u;
-thread uint v45 = 0u;
-thread uint v46 = 0u;
-thread uint v47 = 0u;
-thread uint v48 = 0u;
-thread uint v49 = 0u;
-thread uint v50 = 0u;
-thread uint v51 = 0u;
-thread uint v52 = 0u;
-thread uint v53 = 0u;
-thread uint v54 = 0u;
-thread uint v55 = 0u;
-thread uint v56 = 0u;
-thread uint v57 = 0u;
-thread uint v58 = 0u;
-thread uint v59 = 0u;
-thread uint v60 = 0u;
-thread uint v61 = 0u;
-thread uint v62 = 0u;
-thread uint v63 = 0u;
-thread uint v64 = 0u;
-thread uint v65 = 0u;
-thread uint v66 = 0u;
-thread uint v67 = 0u;
-thread uint v68 = 0u;
-thread uint v69 = 0u;
-thread uint v70 = 0u;
-thread uint v71 = 0u;
-thread uint v72 = 0u;
-thread uint v73 = 0u;
-thread uint v74 = 0u;
-thread uint v75 = 0u;
-thread uint v76 = 0u;
-thread uint v77 = 0u;
-thread uint v78 = 0u;
-thread uint v79 = 0u;
-thread uint v80 = 0u;
-thread uint v81 = 0u;
-thread uint v82 = 0u;
-thread uint v83 = 0u;
-thread uint v84 = 0u;
-thread uint v85 = 0u;
-thread uint v86 = 0u;
-thread uint v87 = 0u;
-thread uint v88 = 0u;
-thread uint v89 = 0u;
-thread uint v90 = 0u;
-thread uint v91 = 0u;
-thread uint v92 = 0u;
-thread uint v93 = 0u;
-thread uint v94 = 0u;
-thread uint v95 = 0u;
-thread uint v96 = 0u;
-thread uint v97 = 0u;
-thread uint v98 = 0u;
-thread uint v99 = 0u;
-thread uint v100 = 0u;
-thread uint v101 = 0u;
-thread uint v102 = 0u;
-thread uint v103 = 0u;
-thread uint v104 = 0u;
-thread uint v105 = 0u;
-thread uint v106 = 0u;
-thread uint v107 = 0u;
-thread uint v108 = 0u;
-thread uint v109 = 0u;
-thread uint v110 = 0u;
-thread uint v111 = 0u;
-thread uint v112 = 0u;
-thread uint v113 = 0u;
-thread uint v114 = 0u;
-thread uint v115 = 0u;
-thread uint v116 = 0u;
-thread uint v117 = 0u;
-thread uint v118 = 0u;
-thread uint v119 = 0u;
-thread uint v120 = 0u;
-thread uint v121 = 0u;
-thread uint v122 = 0u;
-thread uint v123 = 0u;
-thread uint v124 = 0u;
-thread uint v125 = 0u;
-thread uint v126 = 0u;
-thread uint v127 = 0u;
-thread uint v128 = 0u;
-thread uint v129 = 0u;
-thread uint v130 = 0u;
-thread uint v131 = 0u;
-thread uint v132 = 0u;
-thread uint v133 = 0u;
-thread uint v134 = 0u;
-thread uint v135 = 0u;
-thread uint v136 = 0u;
-thread uint v137 = 0u;
-thread uint v138 = 0u;
-thread uint v139 = 0u;
-thread uint v140 = 0u;
-thread uint v141 = 0u;
-thread uint v142 = 0u;
-thread uint v143 = 0u;
-thread uint v144 = 0u;
-thread uint v145 = 0u;
-thread uint v146 = 0u;
-thread uint v147 = 0u;
-thread uint v148 = 0u;
-thread uint v149 = 0u;
-thread uint v150 = 0u;
-thread uint v151 = 0u;
-thread uint v152 = 0u;
-thread uint v153 = 0u;
-thread uint v154 = 0u;
-thread uint v155 = 0u;
-thread uint v156 = 0u;
-thread uint v157 = 0u;
-thread uint v158 = 0u;
-thread uint v159 = 0u;
-thread uint v160 = 0u;
-thread uint v161 = 0u;
-thread uint v162 = 0u;
-thread uint v163 = 0u;
-thread uint v164 = 0u;
-thread uint v165 = 0u;
-thread uint v166 = 0u;
-thread uint v167 = 0u;
-thread uint v168 = 0u;
-thread uint v169 = 0u;
-thread uint v170 = 0u;
-thread uint v171 = 0u;
-thread uint v172 = 0u;
-thread uint v173 = 0u;
-thread uint v174 = 0u;
-thread uint v175 = 0u;
-thread uint v176 = 0u;
-thread uint v177 = 0u;
-thread uint v178 = 0u;
-thread uint v179 = 0u;
-thread uint v180 = 0u;
-thread uint v181 = 0u;
-thread uint v182 = 0u;
-thread uint v183 = 0u;
-thread uint v184 = 0u;
-thread uint v185 = 0u;
-thread uint v186 = 0u;
-thread uint v187 = 0u;
-thread uint v188 = 0u;
-thread uint v189 = 0u;
-thread uint v190 = 0u;
-thread uint v191 = 0u;
-thread uint v192 = 0u;
-thread uint v193 = 0u;
-thread uint v194 = 0u;
-thread uint v195 = 0u;
-thread uint v196 = 0u;
-thread uint v197 = 0u;
-thread uint v198 = 0u;
-thread uint v199 = 0u;
-thread uint v200 = 0u;
-thread uint v201 = 0u;
-thread uint v202 = 0u;
-thread uint v203 = 0u;
-thread uint v204 = 0u;
-thread uint v205 = 0u;
-thread uint v206 = 0u;
-thread uint v207 = 0u;
-thread uint v208 = 0u;
-thread uint v209 = 0u;
-thread uint v210 = 0u;
-thread uint v211 = 0u;
-thread uint v212 = 0u;
-thread uint v213 = 0u;
-thread uint v214 = 0u;
-thread uint v215 = 0u;
-thread uint v216 = 0u;
-thread uint v217 = 0u;
-thread uint v218 = 0u;
-thread uint v219 = 0u;
-thread uint v220 = 0u;
-thread uint v221 = 0u;
-thread uint v222 = 0u;
-thread uint v223 = 0u;
-thread uint v224 = 0u;
-thread uint v225 = 0u;
-thread uint v226 = 0u;
-thread uint v227 = 0u;
-thread uint v228 = 0u;
-thread uint v229 = 0u;
-thread uint v230 = 0u;
-thread uint v231 = 0u;
-thread uint v232 = 0u;
-thread uint v233 = 0u;
-thread uint v234 = 0u;
-thread uint v235 = 0u;
-thread uint v236 = 0u;
-thread uint v237 = 0u;
-thread uint v238 = 0u;
-thread uint v239 = 0u;
-thread uint v240 = 0u;
-thread uint v241 = 0u;
-thread uint v242 = 0u;
-thread uint v243 = 0u;
-thread uint v244 = 0u;
-thread uint v245 = 0u;
-thread uint v246 = 0u;
-thread uint v247 = 0u;
-thread uint v248 = 0u;
-thread uint v249 = 0u;
-thread uint v250 = 0u;
-thread uint v251 = 0u;
-thread uint v252 = 0u;
-thread uint v253 = 0u;
-thread uint v254 = 0u;
-thread uint v255 = 0u;
-thread uint v256 = 0u;
-thread uint v257 = 0u;
-thread uint v258 = 0u;
-thread uint v259 = 0u;
-thread uint v260 = 0u;
-thread uint v261 = 0u;
-thread uint v262 = 0u;
-thread uint v263 = 0u;
-thread uint v264 = 0u;
-thread uint v265 = 0u;
-thread uint v266 = 0u;
-thread uint v267 = 0u;
-thread uint v268 = 0u;
-thread uint v269 = 0u;
-thread uint v270 = 0u;
-thread uint v271 = 0u;
-thread uint v272 = 0u;
-thread uint v273 = 0u;
-thread uint v274 = 0u;
-thread uint v275 = 0u;
-thread uint v276 = 0u;
-thread uint v277 = 0u;
-thread uint v278 = 0u;
-thread uint v279 = 0u;
-thread uint v280 = 0u;
-thread uint v281 = 0u;
-thread uint v282 = 0u;
-thread uint v283 = 0u;
-thread uint v284 = 0u;
-thread uint v285 = 0u;
-thread uint v286 = 0u;
-thread uint v287 = 0u;
-thread uint v288 = 0u;
-thread uint v289 = 0u;
-thread uint v290 = 0u;
-thread uint v291 = 0u;
-thread uint v292 = 0u;
-thread uint v293 = 0u;
-thread uint v294 = 0u;
-thread uint v295 = 0u;
-thread uint v296 = 0u;
-thread uint v297 = 0u;
-thread uint v298 = 0u;
-thread uint v299 = 0u;
-thread uint v300 = 0u;
-thread uint v301 = 0u;
-thread uint v302 = 0u;
-thread uint v303 = 0u;
-thread uint v304 = 0u;
-thread uint v305 = 0u;
-thread uint v306 = 0u;
-thread uint v307 = 0u;
-thread uint v308 = 0u;
-thread uint v309 = 0u;
-thread uint v310 = 0u;
-thread uint v311 = 0u;
-thread uint v312 = 0u;
-thread uint v313 = 0u;
-thread uint v314 = 0u;
-thread uint v315 = 0u;
-thread uint v316 = 0u;
-thread uint v317 = 0u;
-thread uint v318 = 0u;
-thread uint v319 = 0u;
-thread uint v320 = 0u;
-thread uint v321 = 0u;
-thread uint v322 = 0u;
-thread uint v323 = 0u;
-thread uint v324 = 0u;
-thread uint v325 = 0u;
-thread uint v326 = 0u;
-thread uint v327 = 0u;
-thread uint v328 = 0u;
-thread uint v329 = 0u;
-thread uint v330 = 0u;
-thread uint v331 = 0u;
-thread uint v332 = 0u;
-thread uint v333 = 0u;
-thread uint v334 = 0u;
-thread uint v335 = 0u;
-thread uint v336 = 0u;
-thread uint v337 = 0u;
-thread uint v338 = 0u;
-thread uint v339 = 0u;
-thread uint v340 = 0u;
-thread uint v341 = 0u;
-thread uint v342 = 0u;
-thread uint v343 = 0u;
-thread uint v344 = 0u;
-thread uint v345 = 0u;
-thread uint v346 = 0u;
-thread uint v347 = 0u;
-thread uint v348 = 0u;
-thread uint v349 = 0u;
-thread uint v350 = 0u;
-thread uint v351 = 0u;
-thread uint v352 = 0u;
-thread uint v353 = 0u;
-thread uint v354 = 0u;
-thread uint v355 = 0u;
-thread uint v356 = 0u;
-thread uint v357 = 0u;
-thread uint v358 = 0u;
-thread uint v359 = 0u;
-thread uint v360 = 0u;
-thread uint v361 = 0u;
-thread uint v362 = 0u;
-thread uint v363 = 0u;
-thread uint v364 = 0u;
-thread uint v365 = 0u;
-thread uint v366 = 0u;
-thread uint v367 = 0u;
-thread uint v368 = 0u;
-thread uint v369 = 0u;
-thread uint v370 = 0u;
-thread uint v371 = 0u;
-thread uint v372 = 0u;
-thread uint v373 = 0u;
-thread uint v374 = 0u;
-thread uint v375 = 0u;
-thread uint v376 = 0u;
-thread uint v377 = 0u;
-thread uint v378 = 0u;
-thread uint v379 = 0u;
-thread uint v380 = 0u;
-thread uint v381 = 0u;
-thread uint v382 = 0u;
-thread uint v383 = 0u;
-thread uint v384 = 0u;
-thread uint v385 = 0u;
-thread uint v386 = 0u;
-thread uint v387 = 0u;
-thread uint v388 = 0u;
-thread uint v389 = 0u;
-thread uint v390 = 0u;
-thread uint v391 = 0u;
-thread uint v392 = 0u;
-thread uint v393 = 0u;
-thread uint v394 = 0u;
-thread uint v395 = 0u;
-thread uint v396 = 0u;
-thread uint v397 = 0u;
-thread uint v398 = 0u;
-thread uint v399 = 0u;
-thread uint v400 = 0u;
-thread uint v401 = 0u;
-thread uint v402 = 0u;
-thread uint v403 = 0u;
-thread uint v404 = 0u;
-thread uint v405 = 0u;
-thread uint v406 = 0u;
-thread uint v407 = 0u;
-thread uint v408 = 0u;
-thread uint v409 = 0u;
-thread uint v410 = 0u;
-thread uint v411 = 0u;
-thread uint v412 = 0u;
-thread uint v413 = 0u;
-thread uint v414 = 0u;
-thread uint v415 = 0u;
-thread uint v416 = 0u;
-thread uint v417 = 0u;
-thread uint v418 = 0u;
-thread uint v419 = 0u;
-thread uint v420 = 0u;
-thread uint v421 = 0u;
-thread uint v422 = 0u;
-thread uint v423 = 0u;
-thread uint v424 = 0u;
-thread uint v425 = 0u;
-thread uint v426 = 0u;
-thread uint v427 = 0u;
-thread uint v428 = 0u;
-thread uint v429 = 0u;
-thread uint v430 = 0u;
-thread uint v431 = 0u;
-thread uint v432 = 0u;
-thread uint v433 = 0u;
-thread uint v434 = 0u;
-thread uint v435 = 0u;
-thread uint v436 = 0u;
-thread uint v437 = 0u;
-thread uint v438 = 0u;
-thread uint v439 = 0u;
-thread uint v440 = 0u;
-thread uint v441 = 0u;
-thread uint v442 = 0u;
-thread uint v443 = 0u;
-thread uint v444 = 0u;
-thread uint v445 = 0u;
-thread uint v446 = 0u;
-thread uint v447 = 0u;
-thread uint v448 = 0u;
-thread uint v449 = 0u;
-thread uint v450 = 0u;
-thread uint v451 = 0u;
-thread uint v452 = 0u;
-thread uint v453 = 0u;
-thread uint v454 = 0u;
-thread uint v455 = 0u;
-thread uint v456 = 0u;
-thread uint v457 = 0u;
-thread uint v458 = 0u;
-thread uint v459 = 0u;
-thread uint v460 = 0u;
-thread uint v461 = 0u;
-thread uint v462 = 0u;
-thread uint v463 = 0u;
-thread uint v464 = 0u;
-thread uint v465 = 0u;
-thread uint v466 = 0u;
-thread uint v467 = 0u;
-thread uint v468 = 0u;
-thread uint v469 = 0u;
-thread uint v470 = 0u;
-thread uint v471 = 0u;
-thread uint v472 = 0u;
-thread uint v473 = 0u;
-thread uint v474 = 0u;
-thread uint v475 = 0u;
-thread uint v476 = 0u;
-thread uint v477 = 0u;
-thread uint v478 = 0u;
-thread uint v479 = 0u;
-thread uint v480 = 0u;
-thread uint v481 = 0u;
-thread uint v482 = 0u;
-thread uint v483 = 0u;
-thread uint v484 = 0u;
-thread uint v485 = 0u;
-thread uint v486 = 0u;
-thread uint v487 = 0u;
-thread uint v488 = 0u;
-thread uint v489 = 0u;
-thread uint v490 = 0u;
-thread uint v491 = 0u;
-thread uint v492 = 0u;
-thread uint v493 = 0u;
-thread uint v494 = 0u;
-thread uint v495 = 0u;
-thread uint v496 = 0u;
-thread uint v497 = 0u;
-thread uint v498 = 0u;
-thread uint v499 = 0u;
-thread uint v500 = 0u;
-thread uint v501 = 0u;
-thread uint v502 = 0u;
-thread uint v503 = 0u;
-thread uint v504 = 0u;
-thread uint v505 = 0u;
-thread uint v506 = 0u;
-thread uint v507 = 0u;
-thread uint v508 = 0u;
-thread uint v509 = 0u;
-thread uint v510 = 0u;
-thread uint v511 = 0u;
-thread uint v512 = 0u;
-thread uint v513 = 0u;
-thread uint v514 = 0u;
-thread uint v515 = 0u;
-thread uint v516 = 0u;
-thread uint v517 = 0u;
-thread uint v518 = 0u;
-thread uint v519 = 0u;
-thread uint v520 = 0u;
-thread uint v521 = 0u;
-thread uint v522 = 0u;
-thread uint v523 = 0u;
-thread uint v524 = 0u;
-thread uint v525 = 0u;
-thread uint v526 = 0u;
-thread uint v527 = 0u;
-thread uint v528 = 0u;
-thread uint v529 = 0u;
-thread uint v530 = 0u;
-thread uint v531 = 0u;
-thread uint v532 = 0u;
-thread uint v533 = 0u;
-thread uint v534 = 0u;
-thread uint v535 = 0u;
-thread uint v536 = 0u;
-thread uint v537 = 0u;
-thread uint v538 = 0u;
-thread uint v539 = 0u;
-thread uint v540 = 0u;
-thread uint v541 = 0u;
-thread uint v542 = 0u;
-thread uint v543 = 0u;
-thread uint v544 = 0u;
-thread uint v545 = 0u;
-thread uint v546 = 0u;
-thread uint v547 = 0u;
-thread uint v548 = 0u;
-thread uint v549 = 0u;
-thread uint v550 = 0u;
-thread uint v551 = 0u;
-thread uint v552 = 0u;
-thread uint v553 = 0u;
-thread uint v554 = 0u;
-thread uint v555 = 0u;
-thread uint v556 = 0u;
-thread uint v557 = 0u;
-thread uint v558 = 0u;
-thread uint v559 = 0u;
-thread uint v560 = 0u;
-thread uint v561 = 0u;
-thread uint v562 = 0u;
-thread uint v563 = 0u;
-thread uint v564 = 0u;
-thread uint v565 = 0u;
-thread uint v566 = 0u;
-thread uint v567 = 0u;
-thread uint v568 = 0u;
-thread uint v569 = 0u;
-thread uint v570 = 0u;
-thread uint v571 = 0u;
-thread uint v572 = 0u;
-thread uint v573 = 0u;
-thread uint v574 = 0u;
-thread uint v575 = 0u;
-thread uint v576 = 0u;
-thread uint v577 = 0u;
-thread uint v578 = 0u;
-thread uint v579 = 0u;
-thread uint v580 = 0u;
-thread uint v581 = 0u;
-thread uint v582 = 0u;
-thread uint v583 = 0u;
-thread uint v584 = 0u;
-thread uint v585 = 0u;
-thread uint v586 = 0u;
-thread uint v587 = 0u;
-thread uint v588 = 0u;
-thread uint v589 = 0u;
-thread uint v590 = 0u;
-thread uint v591 = 0u;
-thread uint v592 = 0u;
-thread uint v593 = 0u;
-thread uint v594 = 0u;
-thread uint v595 = 0u;
-thread uint v596 = 0u;
-thread uint v597 = 0u;
-thread uint v598 = 0u;
-thread uint v599 = 0u;
-thread uint v600 = 0u;
-thread uint v601 = 0u;
-thread uint v602 = 0u;
-thread uint v603 = 0u;
-thread uint v604 = 0u;
-thread uint v605 = 0u;
-thread uint v606 = 0u;
-thread uint v607 = 0u;
-thread uint v608 = 0u;
-thread uint v609 = 0u;
-thread uint v610 = 0u;
-thread uint v611 = 0u;
-thread uint v612 = 0u;
-thread uint v613 = 0u;
-thread uint v614 = 0u;
-thread uint v615 = 0u;
-thread uint v616 = 0u;
-thread uint v617 = 0u;
-thread uint v618 = 0u;
-thread uint v619 = 0u;
-thread uint v620 = 0u;
-thread uint v621 = 0u;
-thread uint v622 = 0u;
-thread uint v623 = 0u;
-thread uint v624 = 0u;
-thread uint v625 = 0u;
-thread uint v626 = 0u;
-thread uint v627 = 0u;
-thread uint v628 = 0u;
-thread uint v629 = 0u;
-thread uint v630 = 0u;
-thread uint v631 = 0u;
-thread uint v632 = 0u;
-thread uint v633 = 0u;
-thread uint v634 = 0u;
-thread uint v635 = 0u;
-thread uint v636 = 0u;
-thread uint v637 = 0u;
-thread uint v638 = 0u;
-thread uint v639 = 0u;
-thread uint v640 = 0u;
-thread uint v641 = 0u;
-thread uint v642 = 0u;
-thread uint v643 = 0u;
-thread uint v644 = 0u;
-thread uint v645 = 0u;
-thread uint v646 = 0u;
-thread uint v647 = 0u;
-thread uint v648 = 0u;
-thread uint v649 = 0u;
-thread uint v650 = 0u;
-thread uint v651 = 0u;
-thread uint v652 = 0u;
-thread uint v653 = 0u;
-thread uint v654 = 0u;
-thread uint v655 = 0u;
-thread uint v656 = 0u;
-thread uint v657 = 0u;
-thread uint v658 = 0u;
-thread uint v659 = 0u;
-thread uint v660 = 0u;
-thread uint v661 = 0u;
-thread uint v662 = 0u;
-thread uint v663 = 0u;
-thread uint v664 = 0u;
-thread uint v665 = 0u;
-thread uint v666 = 0u;
-thread uint v667 = 0u;
-thread uint v668 = 0u;
-thread uint v669 = 0u;
-thread uint v670 = 0u;
-thread uint v671 = 0u;
-thread uint v672 = 0u;
-thread uint v673 = 0u;
-thread uint v674 = 0u;
-thread uint v675 = 0u;
-thread uint v676 = 0u;
-thread uint v677 = 0u;
-thread uint v678 = 0u;
-thread uint v679 = 0u;
-thread uint v680 = 0u;
-thread uint v681 = 0u;
-thread uint v682 = 0u;
-thread uint v683 = 0u;
-thread uint v684 = 0u;
-thread uint v685 = 0u;
-thread uint v686 = 0u;
-thread uint v687 = 0u;
-thread uint v688 = 0u;
-thread uint v689 = 0u;
-thread uint v690 = 0u;
-thread uint v691 = 0u;
-thread uint v692 = 0u;
-thread uint v693 = 0u;
-thread uint v694 = 0u;
-thread uint v695 = 0u;
-thread uint v696 = 0u;
-thread uint v697 = 0u;
-thread uint v698 = 0u;
-thread uint v699 = 0u;
-thread uint v700 = 0u;
-thread uint v701 = 0u;
-thread uint v702 = 0u;
-thread uint v703 = 0u;
-thread uint v704 = 0u;
-thread uint v705 = 0u;
-thread uint v706 = 0u;
-thread uint v707 = 0u;
-thread uint v708 = 0u;
-thread uint v709 = 0u;
-thread uint v710 = 0u;
-thread uint v711 = 0u;
-thread uint v712 = 0u;
-thread uint v713 = 0u;
-thread uint v714 = 0u;
-thread uint v715 = 0u;
-thread uint v716 = 0u;
-thread uint v717 = 0u;
-thread uint v718 = 0u;
-thread uint v719 = 0u;
-thread uint v720 = 0u;
-thread uint v721 = 0u;
-thread uint v722 = 0u;
-thread uint v723 = 0u;
-thread uint v724 = 0u;
-thread uint v725 = 0u;
-thread uint v726 = 0u;
-thread uint v727 = 0u;
-thread uint v728 = 0u;
-thread uint v729 = 0u;
-thread uint v730 = 0u;
-thread uint v731 = 0u;
-thread uint v732 = 0u;
-thread uint v733 = 0u;
-thread uint v734 = 0u;
-thread uint v735 = 0u;
-thread uint v736 = 0u;
-thread uint v737 = 0u;
-thread uint v738 = 0u;
-thread uint v739 = 0u;
-thread uint v740 = 0u;
-thread uint v741 = 0u;
-thread uint v742 = 0u;
-thread uint v743 = 0u;
-thread uint v744 = 0u;
-thread uint v745 = 0u;
-thread uint v746 = 0u;
-thread uint v747 = 0u;
-thread uint v748 = 0u;
-thread uint v749 = 0u;
-thread uint v750 = 0u;
-thread uint v751 = 0u;
-thread uint v752 = 0u;
-thread uint v753 = 0u;
-thread uint v754 = 0u;
-thread uint v755 = 0u;
-thread uint v756 = 0u;
-thread uint v757 = 0u;
-thread uint v758 = 0u;
-thread uint v759 = 0u;
-thread uint v760 = 0u;
-thread uint v761 = 0u;
-thread uint v762 = 0u;
-thread uint v763 = 0u;
-thread uint v764 = 0u;
-thread uint v765 = 0u;
-thread uint v766 = 0u;
-thread uint v767 = 0u;
-thread uint v768 = 0u;
-thread uint v769 = 0u;
-thread uint v770 = 0u;
-thread uint v771 = 0u;
-thread uint v772 = 0u;
-thread uint v773 = 0u;
-thread uint v774 = 0u;
-thread uint v775 = 0u;
-thread uint v776 = 0u;
-thread uint v777 = 0u;
-thread uint v778 = 0u;
-thread uint v779 = 0u;
-thread uint v780 = 0u;
-thread uint v781 = 0u;
-thread uint v782 = 0u;
-thread uint v783 = 0u;
-thread uint v784 = 0u;
-thread uint v785 = 0u;
-thread uint v786 = 0u;
-thread uint v787 = 0u;
-thread uint v788 = 0u;
-thread uint v789 = 0u;
-thread uint v790 = 0u;
-thread uint v791 = 0u;
-thread uint v792 = 0u;
-thread uint v793 = 0u;
-thread uint v794 = 0u;
-thread uint v795 = 0u;
-thread uint v796 = 0u;
-thread uint v797 = 0u;
-thread uint v798 = 0u;
-thread uint v799 = 0u;
-thread uint v800 = 0u;
-thread uint v801 = 0u;
-thread uint v802 = 0u;
-thread uint v803 = 0u;
-thread uint v804 = 0u;
-thread uint v805 = 0u;
-thread uint v806 = 0u;
-thread uint v807 = 0u;
-thread uint v808 = 0u;
-thread uint v809 = 0u;
-thread uint v810 = 0u;
-thread uint v811 = 0u;
-thread uint v812 = 0u;
-thread uint v813 = 0u;
-thread uint v814 = 0u;
-thread uint v815 = 0u;
-thread uint v816 = 0u;
-thread uint v817 = 0u;
-thread uint v818 = 0u;
-thread uint v819 = 0u;
-thread uint v820 = 0u;
-thread uint v821 = 0u;
-thread uint v822 = 0u;
-thread uint v823 = 0u;
-thread uint v824 = 0u;
-thread uint v825 = 0u;
-thread uint v826 = 0u;
-thread uint v827 = 0u;
-thread uint v828 = 0u;
-thread uint v829 = 0u;
-thread uint v830 = 0u;
-thread uint v831 = 0u;
-thread uint v832 = 0u;
-thread uint v833 = 0u;
-thread uint v834 = 0u;
-thread uint v835 = 0u;
-thread uint v836 = 0u;
-thread uint v837 = 0u;
-thread uint v838 = 0u;
-thread uint v839 = 0u;
-thread uint v840 = 0u;
-thread uint v841 = 0u;
-thread uint v842 = 0u;
-thread uint v843 = 0u;
-thread uint v844 = 0u;
-thread uint v845 = 0u;
-thread uint v846 = 0u;
-thread uint v847 = 0u;
-thread uint v848 = 0u;
-thread uint v849 = 0u;
-thread uint v850 = 0u;
-thread uint v851 = 0u;
-thread uint v852 = 0u;
-thread uint v853 = 0u;
-thread uint v854 = 0u;
-thread uint v855 = 0u;
-thread uint v856 = 0u;
-thread uint v857 = 0u;
-thread uint v858 = 0u;
-thread uint v859 = 0u;
-thread uint v860 = 0u;
-thread uint v861 = 0u;
-thread uint v862 = 0u;
-thread uint v863 = 0u;
-thread uint v864 = 0u;
-thread uint v865 = 0u;
-thread uint v866 = 0u;
-thread uint v867 = 0u;
-thread uint v868 = 0u;
-thread uint v869 = 0u;
-thread uint v870 = 0u;
-thread uint v871 = 0u;
-thread uint v872 = 0u;
-thread uint v873 = 0u;
-thread uint v874 = 0u;
-thread uint v875 = 0u;
-thread uint v876 = 0u;
-thread uint v877 = 0u;
-thread uint v878 = 0u;
-thread uint v879 = 0u;
-thread uint v880 = 0u;
-thread uint v881 = 0u;
-thread uint v882 = 0u;
-thread uint v883 = 0u;
-thread uint v884 = 0u;
-thread uint v885 = 0u;
-thread uint v886 = 0u;
-thread uint v887 = 0u;
-thread uint v888 = 0u;
-thread uint v889 = 0u;
-thread uint v890 = 0u;
-thread uint v891 = 0u;
-thread uint v892 = 0u;
-thread uint v893 = 0u;
-thread uint v894 = 0u;
-thread uint v895 = 0u;
-thread uint v896 = 0u;
-thread uint v897 = 0u;
-thread uint v898 = 0u;
-thread uint v899 = 0u;
-thread uint v900 = 0u;
-thread uint v901 = 0u;
-thread uint v902 = 0u;
-thread uint v903 = 0u;
-thread uint v904 = 0u;
-thread uint v905 = 0u;
-thread uint v906 = 0u;
-thread uint v907 = 0u;
-thread uint v908 = 0u;
-thread uint v909 = 0u;
-thread uint v910 = 0u;
-thread uint v911 = 0u;
-thread uint v912 = 0u;
-thread uint v913 = 0u;
-thread uint v914 = 0u;
-thread uint v915 = 0u;
-thread uint v916 = 0u;
-thread uint v917 = 0u;
-thread uint v918 = 0u;
-thread uint v919 = 0u;
-thread uint v920 = 0u;
-thread uint v921 = 0u;
-thread uint v922 = 0u;
-thread uint v923 = 0u;
-thread uint v924 = 0u;
-thread uint v925 = 0u;
-thread uint v926 = 0u;
-thread uint v927 = 0u;
-thread uint v928 = 0u;
-thread uint v929 = 0u;
-thread uint v930 = 0u;
-thread uint v931 = 0u;
-thread uint v932 = 0u;
-thread uint v933 = 0u;
-thread uint v934 = 0u;
-thread uint v935 = 0u;
-thread uint v936 = 0u;
-thread uint v937 = 0u;
-thread uint v938 = 0u;
-thread uint v939 = 0u;
-thread uint v940 = 0u;
-thread uint v941 = 0u;
-thread uint v942 = 0u;
-thread uint v943 = 0u;
-thread uint v944 = 0u;
-thread uint v945 = 0u;
-thread uint v946 = 0u;
-thread uint v947 = 0u;
-thread uint v948 = 0u;
-thread uint v949 = 0u;
-thread uint v950 = 0u;
-thread uint v951 = 0u;
-thread uint v952 = 0u;
-thread uint v953 = 0u;
-thread uint v954 = 0u;
-thread uint v955 = 0u;
-thread uint v956 = 0u;
-thread uint v957 = 0u;
-thread uint v958 = 0u;
-thread uint v959 = 0u;
-thread uint v960 = 0u;
-thread uint v961 = 0u;
-thread uint v962 = 0u;
-thread uint v963 = 0u;
-thread uint v964 = 0u;
-thread uint v965 = 0u;
-thread uint v966 = 0u;
-thread uint v967 = 0u;
-thread uint v968 = 0u;
-thread uint v969 = 0u;
-thread uint v970 = 0u;
-thread uint v971 = 0u;
-thread uint v972 = 0u;
-thread uint v973 = 0u;
-thread uint v974 = 0u;
-thread uint v975 = 0u;
-thread uint v976 = 0u;
-thread uint v977 = 0u;
-thread uint v978 = 0u;
-thread uint v979 = 0u;
-thread uint v980 = 0u;
-thread uint v981 = 0u;
-thread uint v982 = 0u;
-thread uint v983 = 0u;
-thread uint v984 = 0u;
-thread uint v985 = 0u;
-thread uint v986 = 0u;
-thread uint v987 = 0u;
-thread uint v988 = 0u;
-thread uint v989 = 0u;
-thread uint v990 = 0u;
-thread uint v991 = 0u;
-thread uint v992 = 0u;
-thread uint v993 = 0u;
-thread uint v994 = 0u;
-thread uint v995 = 0u;
-thread uint v996 = 0u;
-thread uint v997 = 0u;
-thread uint v998 = 0u;
-thread uint v999 = 0u;
-uint foo() {
+uint foo(tint_module_vars_struct tint_module_vars) {
   uint x = 0u;
-  x = (x + v0);
-  x = (x + v1);
-  x = (x + v2);
-  x = (x + v3);
-  x = (x + v4);
-  x = (x + v5);
-  x = (x + v6);
-  x = (x + v7);
-  x = (x + v8);
-  x = (x + v9);
-  x = (x + v10);
-  x = (x + v11);
-  x = (x + v12);
-  x = (x + v13);
-  x = (x + v14);
-  x = (x + v15);
-  x = (x + v16);
-  x = (x + v17);
-  x = (x + v18);
-  x = (x + v19);
-  x = (x + v20);
-  x = (x + v21);
-  x = (x + v22);
-  x = (x + v23);
-  x = (x + v24);
-  x = (x + v25);
-  x = (x + v26);
-  x = (x + v27);
-  x = (x + v28);
-  x = (x + v29);
-  x = (x + v30);
-  x = (x + v31);
-  x = (x + v32);
-  x = (x + v33);
-  x = (x + v34);
-  x = (x + v35);
-  x = (x + v36);
-  x = (x + v37);
-  x = (x + v38);
-  x = (x + v39);
-  x = (x + v40);
-  x = (x + v41);
-  x = (x + v42);
-  x = (x + v43);
-  x = (x + v44);
-  x = (x + v45);
-  x = (x + v46);
-  x = (x + v47);
-  x = (x + v48);
-  x = (x + v49);
-  x = (x + v50);
-  x = (x + v51);
-  x = (x + v52);
-  x = (x + v53);
-  x = (x + v54);
-  x = (x + v55);
-  x = (x + v56);
-  x = (x + v57);
-  x = (x + v58);
-  x = (x + v59);
-  x = (x + v60);
-  x = (x + v61);
-  x = (x + v62);
-  x = (x + v63);
-  x = (x + v64);
-  x = (x + v65);
-  x = (x + v66);
-  x = (x + v67);
-  x = (x + v68);
-  x = (x + v69);
-  x = (x + v70);
-  x = (x + v71);
-  x = (x + v72);
-  x = (x + v73);
-  x = (x + v74);
-  x = (x + v75);
-  x = (x + v76);
-  x = (x + v77);
-  x = (x + v78);
-  x = (x + v79);
-  x = (x + v80);
-  x = (x + v81);
-  x = (x + v82);
-  x = (x + v83);
-  x = (x + v84);
-  x = (x + v85);
-  x = (x + v86);
-  x = (x + v87);
-  x = (x + v88);
-  x = (x + v89);
-  x = (x + v90);
-  x = (x + v91);
-  x = (x + v92);
-  x = (x + v93);
-  x = (x + v94);
-  x = (x + v95);
-  x = (x + v96);
-  x = (x + v97);
-  x = (x + v98);
-  x = (x + v99);
-  x = (x + v100);
-  x = (x + v101);
-  x = (x + v102);
-  x = (x + v103);
-  x = (x + v104);
-  x = (x + v105);
-  x = (x + v106);
-  x = (x + v107);
-  x = (x + v108);
-  x = (x + v109);
-  x = (x + v110);
-  x = (x + v111);
-  x = (x + v112);
-  x = (x + v113);
-  x = (x + v114);
-  x = (x + v115);
-  x = (x + v116);
-  x = (x + v117);
-  x = (x + v118);
-  x = (x + v119);
-  x = (x + v120);
-  x = (x + v121);
-  x = (x + v122);
-  x = (x + v123);
-  x = (x + v124);
-  x = (x + v125);
-  x = (x + v126);
-  x = (x + v127);
-  x = (x + v128);
-  x = (x + v129);
-  x = (x + v130);
-  x = (x + v131);
-  x = (x + v132);
-  x = (x + v133);
-  x = (x + v134);
-  x = (x + v135);
-  x = (x + v136);
-  x = (x + v137);
-  x = (x + v138);
-  x = (x + v139);
-  x = (x + v140);
-  x = (x + v141);
-  x = (x + v142);
-  x = (x + v143);
-  x = (x + v144);
-  x = (x + v145);
-  x = (x + v146);
-  x = (x + v147);
-  x = (x + v148);
-  x = (x + v149);
-  x = (x + v150);
-  x = (x + v151);
-  x = (x + v152);
-  x = (x + v153);
-  x = (x + v154);
-  x = (x + v155);
-  x = (x + v156);
-  x = (x + v157);
-  x = (x + v158);
-  x = (x + v159);
-  x = (x + v160);
-  x = (x + v161);
-  x = (x + v162);
-  x = (x + v163);
-  x = (x + v164);
-  x = (x + v165);
-  x = (x + v166);
-  x = (x + v167);
-  x = (x + v168);
-  x = (x + v169);
-  x = (x + v170);
-  x = (x + v171);
-  x = (x + v172);
-  x = (x + v173);
-  x = (x + v174);
-  x = (x + v175);
-  x = (x + v176);
-  x = (x + v177);
-  x = (x + v178);
-  x = (x + v179);
-  x = (x + v180);
-  x = (x + v181);
-  x = (x + v182);
-  x = (x + v183);
-  x = (x + v184);
-  x = (x + v185);
-  x = (x + v186);
-  x = (x + v187);
-  x = (x + v188);
-  x = (x + v189);
-  x = (x + v190);
-  x = (x + v191);
-  x = (x + v192);
-  x = (x + v193);
-  x = (x + v194);
-  x = (x + v195);
-  x = (x + v196);
-  x = (x + v197);
-  x = (x + v198);
-  x = (x + v199);
-  x = (x + v200);
-  x = (x + v201);
-  x = (x + v202);
-  x = (x + v203);
-  x = (x + v204);
-  x = (x + v205);
-  x = (x + v206);
-  x = (x + v207);
-  x = (x + v208);
-  x = (x + v209);
-  x = (x + v210);
-  x = (x + v211);
-  x = (x + v212);
-  x = (x + v213);
-  x = (x + v214);
-  x = (x + v215);
-  x = (x + v216);
-  x = (x + v217);
-  x = (x + v218);
-  x = (x + v219);
-  x = (x + v220);
-  x = (x + v221);
-  x = (x + v222);
-  x = (x + v223);
-  x = (x + v224);
-  x = (x + v225);
-  x = (x + v226);
-  x = (x + v227);
-  x = (x + v228);
-  x = (x + v229);
-  x = (x + v230);
-  x = (x + v231);
-  x = (x + v232);
-  x = (x + v233);
-  x = (x + v234);
-  x = (x + v235);
-  x = (x + v236);
-  x = (x + v237);
-  x = (x + v238);
-  x = (x + v239);
-  x = (x + v240);
-  x = (x + v241);
-  x = (x + v242);
-  x = (x + v243);
-  x = (x + v244);
-  x = (x + v245);
-  x = (x + v246);
-  x = (x + v247);
-  x = (x + v248);
-  x = (x + v249);
-  x = (x + v250);
-  x = (x + v251);
-  x = (x + v252);
-  x = (x + v253);
-  x = (x + v254);
-  x = (x + v255);
-  x = (x + v256);
-  x = (x + v257);
-  x = (x + v258);
-  x = (x + v259);
-  x = (x + v260);
-  x = (x + v261);
-  x = (x + v262);
-  x = (x + v263);
-  x = (x + v264);
-  x = (x + v265);
-  x = (x + v266);
-  x = (x + v267);
-  x = (x + v268);
-  x = (x + v269);
-  x = (x + v270);
-  x = (x + v271);
-  x = (x + v272);
-  x = (x + v273);
-  x = (x + v274);
-  x = (x + v275);
-  x = (x + v276);
-  x = (x + v277);
-  x = (x + v278);
-  x = (x + v279);
-  x = (x + v280);
-  x = (x + v281);
-  x = (x + v282);
-  x = (x + v283);
-  x = (x + v284);
-  x = (x + v285);
-  x = (x + v286);
-  x = (x + v287);
-  x = (x + v288);
-  x = (x + v289);
-  x = (x + v290);
-  x = (x + v291);
-  x = (x + v292);
-  x = (x + v293);
-  x = (x + v294);
-  x = (x + v295);
-  x = (x + v296);
-  x = (x + v297);
-  x = (x + v298);
-  x = (x + v299);
-  x = (x + v300);
-  x = (x + v301);
-  x = (x + v302);
-  x = (x + v303);
-  x = (x + v304);
-  x = (x + v305);
-  x = (x + v306);
-  x = (x + v307);
-  x = (x + v308);
-  x = (x + v309);
-  x = (x + v310);
-  x = (x + v311);
-  x = (x + v312);
-  x = (x + v313);
-  x = (x + v314);
-  x = (x + v315);
-  x = (x + v316);
-  x = (x + v317);
-  x = (x + v318);
-  x = (x + v319);
-  x = (x + v320);
-  x = (x + v321);
-  x = (x + v322);
-  x = (x + v323);
-  x = (x + v324);
-  x = (x + v325);
-  x = (x + v326);
-  x = (x + v327);
-  x = (x + v328);
-  x = (x + v329);
-  x = (x + v330);
-  x = (x + v331);
-  x = (x + v332);
-  x = (x + v333);
-  x = (x + v334);
-  x = (x + v335);
-  x = (x + v336);
-  x = (x + v337);
-  x = (x + v338);
-  x = (x + v339);
-  x = (x + v340);
-  x = (x + v341);
-  x = (x + v342);
-  x = (x + v343);
-  x = (x + v344);
-  x = (x + v345);
-  x = (x + v346);
-  x = (x + v347);
-  x = (x + v348);
-  x = (x + v349);
-  x = (x + v350);
-  x = (x + v351);
-  x = (x + v352);
-  x = (x + v353);
-  x = (x + v354);
-  x = (x + v355);
-  x = (x + v356);
-  x = (x + v357);
-  x = (x + v358);
-  x = (x + v359);
-  x = (x + v360);
-  x = (x + v361);
-  x = (x + v362);
-  x = (x + v363);
-  x = (x + v364);
-  x = (x + v365);
-  x = (x + v366);
-  x = (x + v367);
-  x = (x + v368);
-  x = (x + v369);
-  x = (x + v370);
-  x = (x + v371);
-  x = (x + v372);
-  x = (x + v373);
-  x = (x + v374);
-  x = (x + v375);
-  x = (x + v376);
-  x = (x + v377);
-  x = (x + v378);
-  x = (x + v379);
-  x = (x + v380);
-  x = (x + v381);
-  x = (x + v382);
-  x = (x + v383);
-  x = (x + v384);
-  x = (x + v385);
-  x = (x + v386);
-  x = (x + v387);
-  x = (x + v388);
-  x = (x + v389);
-  x = (x + v390);
-  x = (x + v391);
-  x = (x + v392);
-  x = (x + v393);
-  x = (x + v394);
-  x = (x + v395);
-  x = (x + v396);
-  x = (x + v397);
-  x = (x + v398);
-  x = (x + v399);
-  x = (x + v400);
-  x = (x + v401);
-  x = (x + v402);
-  x = (x + v403);
-  x = (x + v404);
-  x = (x + v405);
-  x = (x + v406);
-  x = (x + v407);
-  x = (x + v408);
-  x = (x + v409);
-  x = (x + v410);
-  x = (x + v411);
-  x = (x + v412);
-  x = (x + v413);
-  x = (x + v414);
-  x = (x + v415);
-  x = (x + v416);
-  x = (x + v417);
-  x = (x + v418);
-  x = (x + v419);
-  x = (x + v420);
-  x = (x + v421);
-  x = (x + v422);
-  x = (x + v423);
-  x = (x + v424);
-  x = (x + v425);
-  x = (x + v426);
-  x = (x + v427);
-  x = (x + v428);
-  x = (x + v429);
-  x = (x + v430);
-  x = (x + v431);
-  x = (x + v432);
-  x = (x + v433);
-  x = (x + v434);
-  x = (x + v435);
-  x = (x + v436);
-  x = (x + v437);
-  x = (x + v438);
-  x = (x + v439);
-  x = (x + v440);
-  x = (x + v441);
-  x = (x + v442);
-  x = (x + v443);
-  x = (x + v444);
-  x = (x + v445);
-  x = (x + v446);
-  x = (x + v447);
-  x = (x + v448);
-  x = (x + v449);
-  x = (x + v450);
-  x = (x + v451);
-  x = (x + v452);
-  x = (x + v453);
-  x = (x + v454);
-  x = (x + v455);
-  x = (x + v456);
-  x = (x + v457);
-  x = (x + v458);
-  x = (x + v459);
-  x = (x + v460);
-  x = (x + v461);
-  x = (x + v462);
-  x = (x + v463);
-  x = (x + v464);
-  x = (x + v465);
-  x = (x + v466);
-  x = (x + v467);
-  x = (x + v468);
-  x = (x + v469);
-  x = (x + v470);
-  x = (x + v471);
-  x = (x + v472);
-  x = (x + v473);
-  x = (x + v474);
-  x = (x + v475);
-  x = (x + v476);
-  x = (x + v477);
-  x = (x + v478);
-  x = (x + v479);
-  x = (x + v480);
-  x = (x + v481);
-  x = (x + v482);
-  x = (x + v483);
-  x = (x + v484);
-  x = (x + v485);
-  x = (x + v486);
-  x = (x + v487);
-  x = (x + v488);
-  x = (x + v489);
-  x = (x + v490);
-  x = (x + v491);
-  x = (x + v492);
-  x = (x + v493);
-  x = (x + v494);
-  x = (x + v495);
-  x = (x + v496);
-  x = (x + v497);
-  x = (x + v498);
-  x = (x + v499);
-  x = (x + v500);
-  x = (x + v501);
-  x = (x + v502);
-  x = (x + v503);
-  x = (x + v504);
-  x = (x + v505);
-  x = (x + v506);
-  x = (x + v507);
-  x = (x + v508);
-  x = (x + v509);
-  x = (x + v510);
-  x = (x + v511);
-  x = (x + v512);
-  x = (x + v513);
-  x = (x + v514);
-  x = (x + v515);
-  x = (x + v516);
-  x = (x + v517);
-  x = (x + v518);
-  x = (x + v519);
-  x = (x + v520);
-  x = (x + v521);
-  x = (x + v522);
-  x = (x + v523);
-  x = (x + v524);
-  x = (x + v525);
-  x = (x + v526);
-  x = (x + v527);
-  x = (x + v528);
-  x = (x + v529);
-  x = (x + v530);
-  x = (x + v531);
-  x = (x + v532);
-  x = (x + v533);
-  x = (x + v534);
-  x = (x + v535);
-  x = (x + v536);
-  x = (x + v537);
-  x = (x + v538);
-  x = (x + v539);
-  x = (x + v540);
-  x = (x + v541);
-  x = (x + v542);
-  x = (x + v543);
-  x = (x + v544);
-  x = (x + v545);
-  x = (x + v546);
-  x = (x + v547);
-  x = (x + v548);
-  x = (x + v549);
-  x = (x + v550);
-  x = (x + v551);
-  x = (x + v552);
-  x = (x + v553);
-  x = (x + v554);
-  x = (x + v555);
-  x = (x + v556);
-  x = (x + v557);
-  x = (x + v558);
-  x = (x + v559);
-  x = (x + v560);
-  x = (x + v561);
-  x = (x + v562);
-  x = (x + v563);
-  x = (x + v564);
-  x = (x + v565);
-  x = (x + v566);
-  x = (x + v567);
-  x = (x + v568);
-  x = (x + v569);
-  x = (x + v570);
-  x = (x + v571);
-  x = (x + v572);
-  x = (x + v573);
-  x = (x + v574);
-  x = (x + v575);
-  x = (x + v576);
-  x = (x + v577);
-  x = (x + v578);
-  x = (x + v579);
-  x = (x + v580);
-  x = (x + v581);
-  x = (x + v582);
-  x = (x + v583);
-  x = (x + v584);
-  x = (x + v585);
-  x = (x + v586);
-  x = (x + v587);
-  x = (x + v588);
-  x = (x + v589);
-  x = (x + v590);
-  x = (x + v591);
-  x = (x + v592);
-  x = (x + v593);
-  x = (x + v594);
-  x = (x + v595);
-  x = (x + v596);
-  x = (x + v597);
-  x = (x + v598);
-  x = (x + v599);
-  x = (x + v600);
-  x = (x + v601);
-  x = (x + v602);
-  x = (x + v603);
-  x = (x + v604);
-  x = (x + v605);
-  x = (x + v606);
-  x = (x + v607);
-  x = (x + v608);
-  x = (x + v609);
-  x = (x + v610);
-  x = (x + v611);
-  x = (x + v612);
-  x = (x + v613);
-  x = (x + v614);
-  x = (x + v615);
-  x = (x + v616);
-  x = (x + v617);
-  x = (x + v618);
-  x = (x + v619);
-  x = (x + v620);
-  x = (x + v621);
-  x = (x + v622);
-  x = (x + v623);
-  x = (x + v624);
-  x = (x + v625);
-  x = (x + v626);
-  x = (x + v627);
-  x = (x + v628);
-  x = (x + v629);
-  x = (x + v630);
-  x = (x + v631);
-  x = (x + v632);
-  x = (x + v633);
-  x = (x + v634);
-  x = (x + v635);
-  x = (x + v636);
-  x = (x + v637);
-  x = (x + v638);
-  x = (x + v639);
-  x = (x + v640);
-  x = (x + v641);
-  x = (x + v642);
-  x = (x + v643);
-  x = (x + v644);
-  x = (x + v645);
-  x = (x + v646);
-  x = (x + v647);
-  x = (x + v648);
-  x = (x + v649);
-  x = (x + v650);
-  x = (x + v651);
-  x = (x + v652);
-  x = (x + v653);
-  x = (x + v654);
-  x = (x + v655);
-  x = (x + v656);
-  x = (x + v657);
-  x = (x + v658);
-  x = (x + v659);
-  x = (x + v660);
-  x = (x + v661);
-  x = (x + v662);
-  x = (x + v663);
-  x = (x + v664);
-  x = (x + v665);
-  x = (x + v666);
-  x = (x + v667);
-  x = (x + v668);
-  x = (x + v669);
-  x = (x + v670);
-  x = (x + v671);
-  x = (x + v672);
-  x = (x + v673);
-  x = (x + v674);
-  x = (x + v675);
-  x = (x + v676);
-  x = (x + v677);
-  x = (x + v678);
-  x = (x + v679);
-  x = (x + v680);
-  x = (x + v681);
-  x = (x + v682);
-  x = (x + v683);
-  x = (x + v684);
-  x = (x + v685);
-  x = (x + v686);
-  x = (x + v687);
-  x = (x + v688);
-  x = (x + v689);
-  x = (x + v690);
-  x = (x + v691);
-  x = (x + v692);
-  x = (x + v693);
-  x = (x + v694);
-  x = (x + v695);
-  x = (x + v696);
-  x = (x + v697);
-  x = (x + v698);
-  x = (x + v699);
-  x = (x + v700);
-  x = (x + v701);
-  x = (x + v702);
-  x = (x + v703);
-  x = (x + v704);
-  x = (x + v705);
-  x = (x + v706);
-  x = (x + v707);
-  x = (x + v708);
-  x = (x + v709);
-  x = (x + v710);
-  x = (x + v711);
-  x = (x + v712);
-  x = (x + v713);
-  x = (x + v714);
-  x = (x + v715);
-  x = (x + v716);
-  x = (x + v717);
-  x = (x + v718);
-  x = (x + v719);
-  x = (x + v720);
-  x = (x + v721);
-  x = (x + v722);
-  x = (x + v723);
-  x = (x + v724);
-  x = (x + v725);
-  x = (x + v726);
-  x = (x + v727);
-  x = (x + v728);
-  x = (x + v729);
-  x = (x + v730);
-  x = (x + v731);
-  x = (x + v732);
-  x = (x + v733);
-  x = (x + v734);
-  x = (x + v735);
-  x = (x + v736);
-  x = (x + v737);
-  x = (x + v738);
-  x = (x + v739);
-  x = (x + v740);
-  x = (x + v741);
-  x = (x + v742);
-  x = (x + v743);
-  x = (x + v744);
-  x = (x + v745);
-  x = (x + v746);
-  x = (x + v747);
-  x = (x + v748);
-  x = (x + v749);
-  x = (x + v750);
-  x = (x + v751);
-  x = (x + v752);
-  x = (x + v753);
-  x = (x + v754);
-  x = (x + v755);
-  x = (x + v756);
-  x = (x + v757);
-  x = (x + v758);
-  x = (x + v759);
-  x = (x + v760);
-  x = (x + v761);
-  x = (x + v762);
-  x = (x + v763);
-  x = (x + v764);
-  x = (x + v765);
-  x = (x + v766);
-  x = (x + v767);
-  x = (x + v768);
-  x = (x + v769);
-  x = (x + v770);
-  x = (x + v771);
-  x = (x + v772);
-  x = (x + v773);
-  x = (x + v774);
-  x = (x + v775);
-  x = (x + v776);
-  x = (x + v777);
-  x = (x + v778);
-  x = (x + v779);
-  x = (x + v780);
-  x = (x + v781);
-  x = (x + v782);
-  x = (x + v783);
-  x = (x + v784);
-  x = (x + v785);
-  x = (x + v786);
-  x = (x + v787);
-  x = (x + v788);
-  x = (x + v789);
-  x = (x + v790);
-  x = (x + v791);
-  x = (x + v792);
-  x = (x + v793);
-  x = (x + v794);
-  x = (x + v795);
-  x = (x + v796);
-  x = (x + v797);
-  x = (x + v798);
-  x = (x + v799);
-  x = (x + v800);
-  x = (x + v801);
-  x = (x + v802);
-  x = (x + v803);
-  x = (x + v804);
-  x = (x + v805);
-  x = (x + v806);
-  x = (x + v807);
-  x = (x + v808);
-  x = (x + v809);
-  x = (x + v810);
-  x = (x + v811);
-  x = (x + v812);
-  x = (x + v813);
-  x = (x + v814);
-  x = (x + v815);
-  x = (x + v816);
-  x = (x + v817);
-  x = (x + v818);
-  x = (x + v819);
-  x = (x + v820);
-  x = (x + v821);
-  x = (x + v822);
-  x = (x + v823);
-  x = (x + v824);
-  x = (x + v825);
-  x = (x + v826);
-  x = (x + v827);
-  x = (x + v828);
-  x = (x + v829);
-  x = (x + v830);
-  x = (x + v831);
-  x = (x + v832);
-  x = (x + v833);
-  x = (x + v834);
-  x = (x + v835);
-  x = (x + v836);
-  x = (x + v837);
-  x = (x + v838);
-  x = (x + v839);
-  x = (x + v840);
-  x = (x + v841);
-  x = (x + v842);
-  x = (x + v843);
-  x = (x + v844);
-  x = (x + v845);
-  x = (x + v846);
-  x = (x + v847);
-  x = (x + v848);
-  x = (x + v849);
-  x = (x + v850);
-  x = (x + v851);
-  x = (x + v852);
-  x = (x + v853);
-  x = (x + v854);
-  x = (x + v855);
-  x = (x + v856);
-  x = (x + v857);
-  x = (x + v858);
-  x = (x + v859);
-  x = (x + v860);
-  x = (x + v861);
-  x = (x + v862);
-  x = (x + v863);
-  x = (x + v864);
-  x = (x + v865);
-  x = (x + v866);
-  x = (x + v867);
-  x = (x + v868);
-  x = (x + v869);
-  x = (x + v870);
-  x = (x + v871);
-  x = (x + v872);
-  x = (x + v873);
-  x = (x + v874);
-  x = (x + v875);
-  x = (x + v876);
-  x = (x + v877);
-  x = (x + v878);
-  x = (x + v879);
-  x = (x + v880);
-  x = (x + v881);
-  x = (x + v882);
-  x = (x + v883);
-  x = (x + v884);
-  x = (x + v885);
-  x = (x + v886);
-  x = (x + v887);
-  x = (x + v888);
-  x = (x + v889);
-  x = (x + v890);
-  x = (x + v891);
-  x = (x + v892);
-  x = (x + v893);
-  x = (x + v894);
-  x = (x + v895);
-  x = (x + v896);
-  x = (x + v897);
-  x = (x + v898);
-  x = (x + v899);
-  x = (x + v900);
-  x = (x + v901);
-  x = (x + v902);
-  x = (x + v903);
-  x = (x + v904);
-  x = (x + v905);
-  x = (x + v906);
-  x = (x + v907);
-  x = (x + v908);
-  x = (x + v909);
-  x = (x + v910);
-  x = (x + v911);
-  x = (x + v912);
-  x = (x + v913);
-  x = (x + v914);
-  x = (x + v915);
-  x = (x + v916);
-  x = (x + v917);
-  x = (x + v918);
-  x = (x + v919);
-  x = (x + v920);
-  x = (x + v921);
-  x = (x + v922);
-  x = (x + v923);
-  x = (x + v924);
-  x = (x + v925);
-  x = (x + v926);
-  x = (x + v927);
-  x = (x + v928);
-  x = (x + v929);
-  x = (x + v930);
-  x = (x + v931);
-  x = (x + v932);
-  x = (x + v933);
-  x = (x + v934);
-  x = (x + v935);
-  x = (x + v936);
-  x = (x + v937);
-  x = (x + v938);
-  x = (x + v939);
-  x = (x + v940);
-  x = (x + v941);
-  x = (x + v942);
-  x = (x + v943);
-  x = (x + v944);
-  x = (x + v945);
-  x = (x + v946);
-  x = (x + v947);
-  x = (x + v948);
-  x = (x + v949);
-  x = (x + v950);
-  x = (x + v951);
-  x = (x + v952);
-  x = (x + v953);
-  x = (x + v954);
-  x = (x + v955);
-  x = (x + v956);
-  x = (x + v957);
-  x = (x + v958);
-  x = (x + v959);
-  x = (x + v960);
-  x = (x + v961);
-  x = (x + v962);
-  x = (x + v963);
-  x = (x + v964);
-  x = (x + v965);
-  x = (x + v966);
-  x = (x + v967);
-  x = (x + v968);
-  x = (x + v969);
-  x = (x + v970);
-  x = (x + v971);
-  x = (x + v972);
-  x = (x + v973);
-  x = (x + v974);
-  x = (x + v975);
-  x = (x + v976);
-  x = (x + v977);
-  x = (x + v978);
-  x = (x + v979);
-  x = (x + v980);
-  x = (x + v981);
-  x = (x + v982);
-  x = (x + v983);
-  x = (x + v984);
-  x = (x + v985);
-  x = (x + v986);
-  x = (x + v987);
-  x = (x + v988);
-  x = (x + v989);
-  x = (x + v990);
-  x = (x + v991);
-  x = (x + v992);
-  x = (x + v993);
-  x = (x + v994);
-  x = (x + v995);
-  x = (x + v996);
-  x = (x + v997);
-  x = (x + v998);
-  x = (x + v999);
+  x = (x + (*tint_module_vars.v0));
+  x = (x + (*tint_module_vars.v1));
+  x = (x + (*tint_module_vars.v2));
+  x = (x + (*tint_module_vars.v3));
+  x = (x + (*tint_module_vars.v4));
+  x = (x + (*tint_module_vars.v5));
+  x = (x + (*tint_module_vars.v6));
+  x = (x + (*tint_module_vars.v7));
+  x = (x + (*tint_module_vars.v8));
+  x = (x + (*tint_module_vars.v9));
+  x = (x + (*tint_module_vars.v10));
+  x = (x + (*tint_module_vars.v11));
+  x = (x + (*tint_module_vars.v12));
+  x = (x + (*tint_module_vars.v13));
+  x = (x + (*tint_module_vars.v14));
+  x = (x + (*tint_module_vars.v15));
+  x = (x + (*tint_module_vars.v16));
+  x = (x + (*tint_module_vars.v17));
+  x = (x + (*tint_module_vars.v18));
+  x = (x + (*tint_module_vars.v19));
+  x = (x + (*tint_module_vars.v20));
+  x = (x + (*tint_module_vars.v21));
+  x = (x + (*tint_module_vars.v22));
+  x = (x + (*tint_module_vars.v23));
+  x = (x + (*tint_module_vars.v24));
+  x = (x + (*tint_module_vars.v25));
+  x = (x + (*tint_module_vars.v26));
+  x = (x + (*tint_module_vars.v27));
+  x = (x + (*tint_module_vars.v28));
+  x = (x + (*tint_module_vars.v29));
+  x = (x + (*tint_module_vars.v30));
+  x = (x + (*tint_module_vars.v31));
+  x = (x + (*tint_module_vars.v32));
+  x = (x + (*tint_module_vars.v33));
+  x = (x + (*tint_module_vars.v34));
+  x = (x + (*tint_module_vars.v35));
+  x = (x + (*tint_module_vars.v36));
+  x = (x + (*tint_module_vars.v37));
+  x = (x + (*tint_module_vars.v38));
+  x = (x + (*tint_module_vars.v39));
+  x = (x + (*tint_module_vars.v40));
+  x = (x + (*tint_module_vars.v41));
+  x = (x + (*tint_module_vars.v42));
+  x = (x + (*tint_module_vars.v43));
+  x = (x + (*tint_module_vars.v44));
+  x = (x + (*tint_module_vars.v45));
+  x = (x + (*tint_module_vars.v46));
+  x = (x + (*tint_module_vars.v47));
+  x = (x + (*tint_module_vars.v48));
+  x = (x + (*tint_module_vars.v49));
+  x = (x + (*tint_module_vars.v50));
+  x = (x + (*tint_module_vars.v51));
+  x = (x + (*tint_module_vars.v52));
+  x = (x + (*tint_module_vars.v53));
+  x = (x + (*tint_module_vars.v54));
+  x = (x + (*tint_module_vars.v55));
+  x = (x + (*tint_module_vars.v56));
+  x = (x + (*tint_module_vars.v57));
+  x = (x + (*tint_module_vars.v58));
+  x = (x + (*tint_module_vars.v59));
+  x = (x + (*tint_module_vars.v60));
+  x = (x + (*tint_module_vars.v61));
+  x = (x + (*tint_module_vars.v62));
+  x = (x + (*tint_module_vars.v63));
+  x = (x + (*tint_module_vars.v64));
+  x = (x + (*tint_module_vars.v65));
+  x = (x + (*tint_module_vars.v66));
+  x = (x + (*tint_module_vars.v67));
+  x = (x + (*tint_module_vars.v68));
+  x = (x + (*tint_module_vars.v69));
+  x = (x + (*tint_module_vars.v70));
+  x = (x + (*tint_module_vars.v71));
+  x = (x + (*tint_module_vars.v72));
+  x = (x + (*tint_module_vars.v73));
+  x = (x + (*tint_module_vars.v74));
+  x = (x + (*tint_module_vars.v75));
+  x = (x + (*tint_module_vars.v76));
+  x = (x + (*tint_module_vars.v77));
+  x = (x + (*tint_module_vars.v78));
+  x = (x + (*tint_module_vars.v79));
+  x = (x + (*tint_module_vars.v80));
+  x = (x + (*tint_module_vars.v81));
+  x = (x + (*tint_module_vars.v82));
+  x = (x + (*tint_module_vars.v83));
+  x = (x + (*tint_module_vars.v84));
+  x = (x + (*tint_module_vars.v85));
+  x = (x + (*tint_module_vars.v86));
+  x = (x + (*tint_module_vars.v87));
+  x = (x + (*tint_module_vars.v88));
+  x = (x + (*tint_module_vars.v89));
+  x = (x + (*tint_module_vars.v90));
+  x = (x + (*tint_module_vars.v91));
+  x = (x + (*tint_module_vars.v92));
+  x = (x + (*tint_module_vars.v93));
+  x = (x + (*tint_module_vars.v94));
+  x = (x + (*tint_module_vars.v95));
+  x = (x + (*tint_module_vars.v96));
+  x = (x + (*tint_module_vars.v97));
+  x = (x + (*tint_module_vars.v98));
+  x = (x + (*tint_module_vars.v99));
+  x = (x + (*tint_module_vars.v100));
+  x = (x + (*tint_module_vars.v101));
+  x = (x + (*tint_module_vars.v102));
+  x = (x + (*tint_module_vars.v103));
+  x = (x + (*tint_module_vars.v104));
+  x = (x + (*tint_module_vars.v105));
+  x = (x + (*tint_module_vars.v106));
+  x = (x + (*tint_module_vars.v107));
+  x = (x + (*tint_module_vars.v108));
+  x = (x + (*tint_module_vars.v109));
+  x = (x + (*tint_module_vars.v110));
+  x = (x + (*tint_module_vars.v111));
+  x = (x + (*tint_module_vars.v112));
+  x = (x + (*tint_module_vars.v113));
+  x = (x + (*tint_module_vars.v114));
+  x = (x + (*tint_module_vars.v115));
+  x = (x + (*tint_module_vars.v116));
+  x = (x + (*tint_module_vars.v117));
+  x = (x + (*tint_module_vars.v118));
+  x = (x + (*tint_module_vars.v119));
+  x = (x + (*tint_module_vars.v120));
+  x = (x + (*tint_module_vars.v121));
+  x = (x + (*tint_module_vars.v122));
+  x = (x + (*tint_module_vars.v123));
+  x = (x + (*tint_module_vars.v124));
+  x = (x + (*tint_module_vars.v125));
+  x = (x + (*tint_module_vars.v126));
+  x = (x + (*tint_module_vars.v127));
+  x = (x + (*tint_module_vars.v128));
+  x = (x + (*tint_module_vars.v129));
+  x = (x + (*tint_module_vars.v130));
+  x = (x + (*tint_module_vars.v131));
+  x = (x + (*tint_module_vars.v132));
+  x = (x + (*tint_module_vars.v133));
+  x = (x + (*tint_module_vars.v134));
+  x = (x + (*tint_module_vars.v135));
+  x = (x + (*tint_module_vars.v136));
+  x = (x + (*tint_module_vars.v137));
+  x = (x + (*tint_module_vars.v138));
+  x = (x + (*tint_module_vars.v139));
+  x = (x + (*tint_module_vars.v140));
+  x = (x + (*tint_module_vars.v141));
+  x = (x + (*tint_module_vars.v142));
+  x = (x + (*tint_module_vars.v143));
+  x = (x + (*tint_module_vars.v144));
+  x = (x + (*tint_module_vars.v145));
+  x = (x + (*tint_module_vars.v146));
+  x = (x + (*tint_module_vars.v147));
+  x = (x + (*tint_module_vars.v148));
+  x = (x + (*tint_module_vars.v149));
+  x = (x + (*tint_module_vars.v150));
+  x = (x + (*tint_module_vars.v151));
+  x = (x + (*tint_module_vars.v152));
+  x = (x + (*tint_module_vars.v153));
+  x = (x + (*tint_module_vars.v154));
+  x = (x + (*tint_module_vars.v155));
+  x = (x + (*tint_module_vars.v156));
+  x = (x + (*tint_module_vars.v157));
+  x = (x + (*tint_module_vars.v158));
+  x = (x + (*tint_module_vars.v159));
+  x = (x + (*tint_module_vars.v160));
+  x = (x + (*tint_module_vars.v161));
+  x = (x + (*tint_module_vars.v162));
+  x = (x + (*tint_module_vars.v163));
+  x = (x + (*tint_module_vars.v164));
+  x = (x + (*tint_module_vars.v165));
+  x = (x + (*tint_module_vars.v166));
+  x = (x + (*tint_module_vars.v167));
+  x = (x + (*tint_module_vars.v168));
+  x = (x + (*tint_module_vars.v169));
+  x = (x + (*tint_module_vars.v170));
+  x = (x + (*tint_module_vars.v171));
+  x = (x + (*tint_module_vars.v172));
+  x = (x + (*tint_module_vars.v173));
+  x = (x + (*tint_module_vars.v174));
+  x = (x + (*tint_module_vars.v175));
+  x = (x + (*tint_module_vars.v176));
+  x = (x + (*tint_module_vars.v177));
+  x = (x + (*tint_module_vars.v178));
+  x = (x + (*tint_module_vars.v179));
+  x = (x + (*tint_module_vars.v180));
+  x = (x + (*tint_module_vars.v181));
+  x = (x + (*tint_module_vars.v182));
+  x = (x + (*tint_module_vars.v183));
+  x = (x + (*tint_module_vars.v184));
+  x = (x + (*tint_module_vars.v185));
+  x = (x + (*tint_module_vars.v186));
+  x = (x + (*tint_module_vars.v187));
+  x = (x + (*tint_module_vars.v188));
+  x = (x + (*tint_module_vars.v189));
+  x = (x + (*tint_module_vars.v190));
+  x = (x + (*tint_module_vars.v191));
+  x = (x + (*tint_module_vars.v192));
+  x = (x + (*tint_module_vars.v193));
+  x = (x + (*tint_module_vars.v194));
+  x = (x + (*tint_module_vars.v195));
+  x = (x + (*tint_module_vars.v196));
+  x = (x + (*tint_module_vars.v197));
+  x = (x + (*tint_module_vars.v198));
+  x = (x + (*tint_module_vars.v199));
+  x = (x + (*tint_module_vars.v200));
+  x = (x + (*tint_module_vars.v201));
+  x = (x + (*tint_module_vars.v202));
+  x = (x + (*tint_module_vars.v203));
+  x = (x + (*tint_module_vars.v204));
+  x = (x + (*tint_module_vars.v205));
+  x = (x + (*tint_module_vars.v206));
+  x = (x + (*tint_module_vars.v207));
+  x = (x + (*tint_module_vars.v208));
+  x = (x + (*tint_module_vars.v209));
+  x = (x + (*tint_module_vars.v210));
+  x = (x + (*tint_module_vars.v211));
+  x = (x + (*tint_module_vars.v212));
+  x = (x + (*tint_module_vars.v213));
+  x = (x + (*tint_module_vars.v214));
+  x = (x + (*tint_module_vars.v215));
+  x = (x + (*tint_module_vars.v216));
+  x = (x + (*tint_module_vars.v217));
+  x = (x + (*tint_module_vars.v218));
+  x = (x + (*tint_module_vars.v219));
+  x = (x + (*tint_module_vars.v220));
+  x = (x + (*tint_module_vars.v221));
+  x = (x + (*tint_module_vars.v222));
+  x = (x + (*tint_module_vars.v223));
+  x = (x + (*tint_module_vars.v224));
+  x = (x + (*tint_module_vars.v225));
+  x = (x + (*tint_module_vars.v226));
+  x = (x + (*tint_module_vars.v227));
+  x = (x + (*tint_module_vars.v228));
+  x = (x + (*tint_module_vars.v229));
+  x = (x + (*tint_module_vars.v230));
+  x = (x + (*tint_module_vars.v231));
+  x = (x + (*tint_module_vars.v232));
+  x = (x + (*tint_module_vars.v233));
+  x = (x + (*tint_module_vars.v234));
+  x = (x + (*tint_module_vars.v235));
+  x = (x + (*tint_module_vars.v236));
+  x = (x + (*tint_module_vars.v237));
+  x = (x + (*tint_module_vars.v238));
+  x = (x + (*tint_module_vars.v239));
+  x = (x + (*tint_module_vars.v240));
+  x = (x + (*tint_module_vars.v241));
+  x = (x + (*tint_module_vars.v242));
+  x = (x + (*tint_module_vars.v243));
+  x = (x + (*tint_module_vars.v244));
+  x = (x + (*tint_module_vars.v245));
+  x = (x + (*tint_module_vars.v246));
+  x = (x + (*tint_module_vars.v247));
+  x = (x + (*tint_module_vars.v248));
+  x = (x + (*tint_module_vars.v249));
+  x = (x + (*tint_module_vars.v250));
+  x = (x + (*tint_module_vars.v251));
+  x = (x + (*tint_module_vars.v252));
+  x = (x + (*tint_module_vars.v253));
+  x = (x + (*tint_module_vars.v254));
+  x = (x + (*tint_module_vars.v255));
+  x = (x + (*tint_module_vars.v256));
+  x = (x + (*tint_module_vars.v257));
+  x = (x + (*tint_module_vars.v258));
+  x = (x + (*tint_module_vars.v259));
+  x = (x + (*tint_module_vars.v260));
+  x = (x + (*tint_module_vars.v261));
+  x = (x + (*tint_module_vars.v262));
+  x = (x + (*tint_module_vars.v263));
+  x = (x + (*tint_module_vars.v264));
+  x = (x + (*tint_module_vars.v265));
+  x = (x + (*tint_module_vars.v266));
+  x = (x + (*tint_module_vars.v267));
+  x = (x + (*tint_module_vars.v268));
+  x = (x + (*tint_module_vars.v269));
+  x = (x + (*tint_module_vars.v270));
+  x = (x + (*tint_module_vars.v271));
+  x = (x + (*tint_module_vars.v272));
+  x = (x + (*tint_module_vars.v273));
+  x = (x + (*tint_module_vars.v274));
+  x = (x + (*tint_module_vars.v275));
+  x = (x + (*tint_module_vars.v276));
+  x = (x + (*tint_module_vars.v277));
+  x = (x + (*tint_module_vars.v278));
+  x = (x + (*tint_module_vars.v279));
+  x = (x + (*tint_module_vars.v280));
+  x = (x + (*tint_module_vars.v281));
+  x = (x + (*tint_module_vars.v282));
+  x = (x + (*tint_module_vars.v283));
+  x = (x + (*tint_module_vars.v284));
+  x = (x + (*tint_module_vars.v285));
+  x = (x + (*tint_module_vars.v286));
+  x = (x + (*tint_module_vars.v287));
+  x = (x + (*tint_module_vars.v288));
+  x = (x + (*tint_module_vars.v289));
+  x = (x + (*tint_module_vars.v290));
+  x = (x + (*tint_module_vars.v291));
+  x = (x + (*tint_module_vars.v292));
+  x = (x + (*tint_module_vars.v293));
+  x = (x + (*tint_module_vars.v294));
+  x = (x + (*tint_module_vars.v295));
+  x = (x + (*tint_module_vars.v296));
+  x = (x + (*tint_module_vars.v297));
+  x = (x + (*tint_module_vars.v298));
+  x = (x + (*tint_module_vars.v299));
+  x = (x + (*tint_module_vars.v300));
+  x = (x + (*tint_module_vars.v301));
+  x = (x + (*tint_module_vars.v302));
+  x = (x + (*tint_module_vars.v303));
+  x = (x + (*tint_module_vars.v304));
+  x = (x + (*tint_module_vars.v305));
+  x = (x + (*tint_module_vars.v306));
+  x = (x + (*tint_module_vars.v307));
+  x = (x + (*tint_module_vars.v308));
+  x = (x + (*tint_module_vars.v309));
+  x = (x + (*tint_module_vars.v310));
+  x = (x + (*tint_module_vars.v311));
+  x = (x + (*tint_module_vars.v312));
+  x = (x + (*tint_module_vars.v313));
+  x = (x + (*tint_module_vars.v314));
+  x = (x + (*tint_module_vars.v315));
+  x = (x + (*tint_module_vars.v316));
+  x = (x + (*tint_module_vars.v317));
+  x = (x + (*tint_module_vars.v318));
+  x = (x + (*tint_module_vars.v319));
+  x = (x + (*tint_module_vars.v320));
+  x = (x + (*tint_module_vars.v321));
+  x = (x + (*tint_module_vars.v322));
+  x = (x + (*tint_module_vars.v323));
+  x = (x + (*tint_module_vars.v324));
+  x = (x + (*tint_module_vars.v325));
+  x = (x + (*tint_module_vars.v326));
+  x = (x + (*tint_module_vars.v327));
+  x = (x + (*tint_module_vars.v328));
+  x = (x + (*tint_module_vars.v329));
+  x = (x + (*tint_module_vars.v330));
+  x = (x + (*tint_module_vars.v331));
+  x = (x + (*tint_module_vars.v332));
+  x = (x + (*tint_module_vars.v333));
+  x = (x + (*tint_module_vars.v334));
+  x = (x + (*tint_module_vars.v335));
+  x = (x + (*tint_module_vars.v336));
+  x = (x + (*tint_module_vars.v337));
+  x = (x + (*tint_module_vars.v338));
+  x = (x + (*tint_module_vars.v339));
+  x = (x + (*tint_module_vars.v340));
+  x = (x + (*tint_module_vars.v341));
+  x = (x + (*tint_module_vars.v342));
+  x = (x + (*tint_module_vars.v343));
+  x = (x + (*tint_module_vars.v344));
+  x = (x + (*tint_module_vars.v345));
+  x = (x + (*tint_module_vars.v346));
+  x = (x + (*tint_module_vars.v347));
+  x = (x + (*tint_module_vars.v348));
+  x = (x + (*tint_module_vars.v349));
+  x = (x + (*tint_module_vars.v350));
+  x = (x + (*tint_module_vars.v351));
+  x = (x + (*tint_module_vars.v352));
+  x = (x + (*tint_module_vars.v353));
+  x = (x + (*tint_module_vars.v354));
+  x = (x + (*tint_module_vars.v355));
+  x = (x + (*tint_module_vars.v356));
+  x = (x + (*tint_module_vars.v357));
+  x = (x + (*tint_module_vars.v358));
+  x = (x + (*tint_module_vars.v359));
+  x = (x + (*tint_module_vars.v360));
+  x = (x + (*tint_module_vars.v361));
+  x = (x + (*tint_module_vars.v362));
+  x = (x + (*tint_module_vars.v363));
+  x = (x + (*tint_module_vars.v364));
+  x = (x + (*tint_module_vars.v365));
+  x = (x + (*tint_module_vars.v366));
+  x = (x + (*tint_module_vars.v367));
+  x = (x + (*tint_module_vars.v368));
+  x = (x + (*tint_module_vars.v369));
+  x = (x + (*tint_module_vars.v370));
+  x = (x + (*tint_module_vars.v371));
+  x = (x + (*tint_module_vars.v372));
+  x = (x + (*tint_module_vars.v373));
+  x = (x + (*tint_module_vars.v374));
+  x = (x + (*tint_module_vars.v375));
+  x = (x + (*tint_module_vars.v376));
+  x = (x + (*tint_module_vars.v377));
+  x = (x + (*tint_module_vars.v378));
+  x = (x + (*tint_module_vars.v379));
+  x = (x + (*tint_module_vars.v380));
+  x = (x + (*tint_module_vars.v381));
+  x = (x + (*tint_module_vars.v382));
+  x = (x + (*tint_module_vars.v383));
+  x = (x + (*tint_module_vars.v384));
+  x = (x + (*tint_module_vars.v385));
+  x = (x + (*tint_module_vars.v386));
+  x = (x + (*tint_module_vars.v387));
+  x = (x + (*tint_module_vars.v388));
+  x = (x + (*tint_module_vars.v389));
+  x = (x + (*tint_module_vars.v390));
+  x = (x + (*tint_module_vars.v391));
+  x = (x + (*tint_module_vars.v392));
+  x = (x + (*tint_module_vars.v393));
+  x = (x + (*tint_module_vars.v394));
+  x = (x + (*tint_module_vars.v395));
+  x = (x + (*tint_module_vars.v396));
+  x = (x + (*tint_module_vars.v397));
+  x = (x + (*tint_module_vars.v398));
+  x = (x + (*tint_module_vars.v399));
+  x = (x + (*tint_module_vars.v400));
+  x = (x + (*tint_module_vars.v401));
+  x = (x + (*tint_module_vars.v402));
+  x = (x + (*tint_module_vars.v403));
+  x = (x + (*tint_module_vars.v404));
+  x = (x + (*tint_module_vars.v405));
+  x = (x + (*tint_module_vars.v406));
+  x = (x + (*tint_module_vars.v407));
+  x = (x + (*tint_module_vars.v408));
+  x = (x + (*tint_module_vars.v409));
+  x = (x + (*tint_module_vars.v410));
+  x = (x + (*tint_module_vars.v411));
+  x = (x + (*tint_module_vars.v412));
+  x = (x + (*tint_module_vars.v413));
+  x = (x + (*tint_module_vars.v414));
+  x = (x + (*tint_module_vars.v415));
+  x = (x + (*tint_module_vars.v416));
+  x = (x + (*tint_module_vars.v417));
+  x = (x + (*tint_module_vars.v418));
+  x = (x + (*tint_module_vars.v419));
+  x = (x + (*tint_module_vars.v420));
+  x = (x + (*tint_module_vars.v421));
+  x = (x + (*tint_module_vars.v422));
+  x = (x + (*tint_module_vars.v423));
+  x = (x + (*tint_module_vars.v424));
+  x = (x + (*tint_module_vars.v425));
+  x = (x + (*tint_module_vars.v426));
+  x = (x + (*tint_module_vars.v427));
+  x = (x + (*tint_module_vars.v428));
+  x = (x + (*tint_module_vars.v429));
+  x = (x + (*tint_module_vars.v430));
+  x = (x + (*tint_module_vars.v431));
+  x = (x + (*tint_module_vars.v432));
+  x = (x + (*tint_module_vars.v433));
+  x = (x + (*tint_module_vars.v434));
+  x = (x + (*tint_module_vars.v435));
+  x = (x + (*tint_module_vars.v436));
+  x = (x + (*tint_module_vars.v437));
+  x = (x + (*tint_module_vars.v438));
+  x = (x + (*tint_module_vars.v439));
+  x = (x + (*tint_module_vars.v440));
+  x = (x + (*tint_module_vars.v441));
+  x = (x + (*tint_module_vars.v442));
+  x = (x + (*tint_module_vars.v443));
+  x = (x + (*tint_module_vars.v444));
+  x = (x + (*tint_module_vars.v445));
+  x = (x + (*tint_module_vars.v446));
+  x = (x + (*tint_module_vars.v447));
+  x = (x + (*tint_module_vars.v448));
+  x = (x + (*tint_module_vars.v449));
+  x = (x + (*tint_module_vars.v450));
+  x = (x + (*tint_module_vars.v451));
+  x = (x + (*tint_module_vars.v452));
+  x = (x + (*tint_module_vars.v453));
+  x = (x + (*tint_module_vars.v454));
+  x = (x + (*tint_module_vars.v455));
+  x = (x + (*tint_module_vars.v456));
+  x = (x + (*tint_module_vars.v457));
+  x = (x + (*tint_module_vars.v458));
+  x = (x + (*tint_module_vars.v459));
+  x = (x + (*tint_module_vars.v460));
+  x = (x + (*tint_module_vars.v461));
+  x = (x + (*tint_module_vars.v462));
+  x = (x + (*tint_module_vars.v463));
+  x = (x + (*tint_module_vars.v464));
+  x = (x + (*tint_module_vars.v465));
+  x = (x + (*tint_module_vars.v466));
+  x = (x + (*tint_module_vars.v467));
+  x = (x + (*tint_module_vars.v468));
+  x = (x + (*tint_module_vars.v469));
+  x = (x + (*tint_module_vars.v470));
+  x = (x + (*tint_module_vars.v471));
+  x = (x + (*tint_module_vars.v472));
+  x = (x + (*tint_module_vars.v473));
+  x = (x + (*tint_module_vars.v474));
+  x = (x + (*tint_module_vars.v475));
+  x = (x + (*tint_module_vars.v476));
+  x = (x + (*tint_module_vars.v477));
+  x = (x + (*tint_module_vars.v478));
+  x = (x + (*tint_module_vars.v479));
+  x = (x + (*tint_module_vars.v480));
+  x = (x + (*tint_module_vars.v481));
+  x = (x + (*tint_module_vars.v482));
+  x = (x + (*tint_module_vars.v483));
+  x = (x + (*tint_module_vars.v484));
+  x = (x + (*tint_module_vars.v485));
+  x = (x + (*tint_module_vars.v486));
+  x = (x + (*tint_module_vars.v487));
+  x = (x + (*tint_module_vars.v488));
+  x = (x + (*tint_module_vars.v489));
+  x = (x + (*tint_module_vars.v490));
+  x = (x + (*tint_module_vars.v491));
+  x = (x + (*tint_module_vars.v492));
+  x = (x + (*tint_module_vars.v493));
+  x = (x + (*tint_module_vars.v494));
+  x = (x + (*tint_module_vars.v495));
+  x = (x + (*tint_module_vars.v496));
+  x = (x + (*tint_module_vars.v497));
+  x = (x + (*tint_module_vars.v498));
+  x = (x + (*tint_module_vars.v499));
+  x = (x + (*tint_module_vars.v500));
+  x = (x + (*tint_module_vars.v501));
+  x = (x + (*tint_module_vars.v502));
+  x = (x + (*tint_module_vars.v503));
+  x = (x + (*tint_module_vars.v504));
+  x = (x + (*tint_module_vars.v505));
+  x = (x + (*tint_module_vars.v506));
+  x = (x + (*tint_module_vars.v507));
+  x = (x + (*tint_module_vars.v508));
+  x = (x + (*tint_module_vars.v509));
+  x = (x + (*tint_module_vars.v510));
+  x = (x + (*tint_module_vars.v511));
+  x = (x + (*tint_module_vars.v512));
+  x = (x + (*tint_module_vars.v513));
+  x = (x + (*tint_module_vars.v514));
+  x = (x + (*tint_module_vars.v515));
+  x = (x + (*tint_module_vars.v516));
+  x = (x + (*tint_module_vars.v517));
+  x = (x + (*tint_module_vars.v518));
+  x = (x + (*tint_module_vars.v519));
+  x = (x + (*tint_module_vars.v520));
+  x = (x + (*tint_module_vars.v521));
+  x = (x + (*tint_module_vars.v522));
+  x = (x + (*tint_module_vars.v523));
+  x = (x + (*tint_module_vars.v524));
+  x = (x + (*tint_module_vars.v525));
+  x = (x + (*tint_module_vars.v526));
+  x = (x + (*tint_module_vars.v527));
+  x = (x + (*tint_module_vars.v528));
+  x = (x + (*tint_module_vars.v529));
+  x = (x + (*tint_module_vars.v530));
+  x = (x + (*tint_module_vars.v531));
+  x = (x + (*tint_module_vars.v532));
+  x = (x + (*tint_module_vars.v533));
+  x = (x + (*tint_module_vars.v534));
+  x = (x + (*tint_module_vars.v535));
+  x = (x + (*tint_module_vars.v536));
+  x = (x + (*tint_module_vars.v537));
+  x = (x + (*tint_module_vars.v538));
+  x = (x + (*tint_module_vars.v539));
+  x = (x + (*tint_module_vars.v540));
+  x = (x + (*tint_module_vars.v541));
+  x = (x + (*tint_module_vars.v542));
+  x = (x + (*tint_module_vars.v543));
+  x = (x + (*tint_module_vars.v544));
+  x = (x + (*tint_module_vars.v545));
+  x = (x + (*tint_module_vars.v546));
+  x = (x + (*tint_module_vars.v547));
+  x = (x + (*tint_module_vars.v548));
+  x = (x + (*tint_module_vars.v549));
+  x = (x + (*tint_module_vars.v550));
+  x = (x + (*tint_module_vars.v551));
+  x = (x + (*tint_module_vars.v552));
+  x = (x + (*tint_module_vars.v553));
+  x = (x + (*tint_module_vars.v554));
+  x = (x + (*tint_module_vars.v555));
+  x = (x + (*tint_module_vars.v556));
+  x = (x + (*tint_module_vars.v557));
+  x = (x + (*tint_module_vars.v558));
+  x = (x + (*tint_module_vars.v559));
+  x = (x + (*tint_module_vars.v560));
+  x = (x + (*tint_module_vars.v561));
+  x = (x + (*tint_module_vars.v562));
+  x = (x + (*tint_module_vars.v563));
+  x = (x + (*tint_module_vars.v564));
+  x = (x + (*tint_module_vars.v565));
+  x = (x + (*tint_module_vars.v566));
+  x = (x + (*tint_module_vars.v567));
+  x = (x + (*tint_module_vars.v568));
+  x = (x + (*tint_module_vars.v569));
+  x = (x + (*tint_module_vars.v570));
+  x = (x + (*tint_module_vars.v571));
+  x = (x + (*tint_module_vars.v572));
+  x = (x + (*tint_module_vars.v573));
+  x = (x + (*tint_module_vars.v574));
+  x = (x + (*tint_module_vars.v575));
+  x = (x + (*tint_module_vars.v576));
+  x = (x + (*tint_module_vars.v577));
+  x = (x + (*tint_module_vars.v578));
+  x = (x + (*tint_module_vars.v579));
+  x = (x + (*tint_module_vars.v580));
+  x = (x + (*tint_module_vars.v581));
+  x = (x + (*tint_module_vars.v582));
+  x = (x + (*tint_module_vars.v583));
+  x = (x + (*tint_module_vars.v584));
+  x = (x + (*tint_module_vars.v585));
+  x = (x + (*tint_module_vars.v586));
+  x = (x + (*tint_module_vars.v587));
+  x = (x + (*tint_module_vars.v588));
+  x = (x + (*tint_module_vars.v589));
+  x = (x + (*tint_module_vars.v590));
+  x = (x + (*tint_module_vars.v591));
+  x = (x + (*tint_module_vars.v592));
+  x = (x + (*tint_module_vars.v593));
+  x = (x + (*tint_module_vars.v594));
+  x = (x + (*tint_module_vars.v595));
+  x = (x + (*tint_module_vars.v596));
+  x = (x + (*tint_module_vars.v597));
+  x = (x + (*tint_module_vars.v598));
+  x = (x + (*tint_module_vars.v599));
+  x = (x + (*tint_module_vars.v600));
+  x = (x + (*tint_module_vars.v601));
+  x = (x + (*tint_module_vars.v602));
+  x = (x + (*tint_module_vars.v603));
+  x = (x + (*tint_module_vars.v604));
+  x = (x + (*tint_module_vars.v605));
+  x = (x + (*tint_module_vars.v606));
+  x = (x + (*tint_module_vars.v607));
+  x = (x + (*tint_module_vars.v608));
+  x = (x + (*tint_module_vars.v609));
+  x = (x + (*tint_module_vars.v610));
+  x = (x + (*tint_module_vars.v611));
+  x = (x + (*tint_module_vars.v612));
+  x = (x + (*tint_module_vars.v613));
+  x = (x + (*tint_module_vars.v614));
+  x = (x + (*tint_module_vars.v615));
+  x = (x + (*tint_module_vars.v616));
+  x = (x + (*tint_module_vars.v617));
+  x = (x + (*tint_module_vars.v618));
+  x = (x + (*tint_module_vars.v619));
+  x = (x + (*tint_module_vars.v620));
+  x = (x + (*tint_module_vars.v621));
+  x = (x + (*tint_module_vars.v622));
+  x = (x + (*tint_module_vars.v623));
+  x = (x + (*tint_module_vars.v624));
+  x = (x + (*tint_module_vars.v625));
+  x = (x + (*tint_module_vars.v626));
+  x = (x + (*tint_module_vars.v627));
+  x = (x + (*tint_module_vars.v628));
+  x = (x + (*tint_module_vars.v629));
+  x = (x + (*tint_module_vars.v630));
+  x = (x + (*tint_module_vars.v631));
+  x = (x + (*tint_module_vars.v632));
+  x = (x + (*tint_module_vars.v633));
+  x = (x + (*tint_module_vars.v634));
+  x = (x + (*tint_module_vars.v635));
+  x = (x + (*tint_module_vars.v636));
+  x = (x + (*tint_module_vars.v637));
+  x = (x + (*tint_module_vars.v638));
+  x = (x + (*tint_module_vars.v639));
+  x = (x + (*tint_module_vars.v640));
+  x = (x + (*tint_module_vars.v641));
+  x = (x + (*tint_module_vars.v642));
+  x = (x + (*tint_module_vars.v643));
+  x = (x + (*tint_module_vars.v644));
+  x = (x + (*tint_module_vars.v645));
+  x = (x + (*tint_module_vars.v646));
+  x = (x + (*tint_module_vars.v647));
+  x = (x + (*tint_module_vars.v648));
+  x = (x + (*tint_module_vars.v649));
+  x = (x + (*tint_module_vars.v650));
+  x = (x + (*tint_module_vars.v651));
+  x = (x + (*tint_module_vars.v652));
+  x = (x + (*tint_module_vars.v653));
+  x = (x + (*tint_module_vars.v654));
+  x = (x + (*tint_module_vars.v655));
+  x = (x + (*tint_module_vars.v656));
+  x = (x + (*tint_module_vars.v657));
+  x = (x + (*tint_module_vars.v658));
+  x = (x + (*tint_module_vars.v659));
+  x = (x + (*tint_module_vars.v660));
+  x = (x + (*tint_module_vars.v661));
+  x = (x + (*tint_module_vars.v662));
+  x = (x + (*tint_module_vars.v663));
+  x = (x + (*tint_module_vars.v664));
+  x = (x + (*tint_module_vars.v665));
+  x = (x + (*tint_module_vars.v666));
+  x = (x + (*tint_module_vars.v667));
+  x = (x + (*tint_module_vars.v668));
+  x = (x + (*tint_module_vars.v669));
+  x = (x + (*tint_module_vars.v670));
+  x = (x + (*tint_module_vars.v671));
+  x = (x + (*tint_module_vars.v672));
+  x = (x + (*tint_module_vars.v673));
+  x = (x + (*tint_module_vars.v674));
+  x = (x + (*tint_module_vars.v675));
+  x = (x + (*tint_module_vars.v676));
+  x = (x + (*tint_module_vars.v677));
+  x = (x + (*tint_module_vars.v678));
+  x = (x + (*tint_module_vars.v679));
+  x = (x + (*tint_module_vars.v680));
+  x = (x + (*tint_module_vars.v681));
+  x = (x + (*tint_module_vars.v682));
+  x = (x + (*tint_module_vars.v683));
+  x = (x + (*tint_module_vars.v684));
+  x = (x + (*tint_module_vars.v685));
+  x = (x + (*tint_module_vars.v686));
+  x = (x + (*tint_module_vars.v687));
+  x = (x + (*tint_module_vars.v688));
+  x = (x + (*tint_module_vars.v689));
+  x = (x + (*tint_module_vars.v690));
+  x = (x + (*tint_module_vars.v691));
+  x = (x + (*tint_module_vars.v692));
+  x = (x + (*tint_module_vars.v693));
+  x = (x + (*tint_module_vars.v694));
+  x = (x + (*tint_module_vars.v695));
+  x = (x + (*tint_module_vars.v696));
+  x = (x + (*tint_module_vars.v697));
+  x = (x + (*tint_module_vars.v698));
+  x = (x + (*tint_module_vars.v699));
+  x = (x + (*tint_module_vars.v700));
+  x = (x + (*tint_module_vars.v701));
+  x = (x + (*tint_module_vars.v702));
+  x = (x + (*tint_module_vars.v703));
+  x = (x + (*tint_module_vars.v704));
+  x = (x + (*tint_module_vars.v705));
+  x = (x + (*tint_module_vars.v706));
+  x = (x + (*tint_module_vars.v707));
+  x = (x + (*tint_module_vars.v708));
+  x = (x + (*tint_module_vars.v709));
+  x = (x + (*tint_module_vars.v710));
+  x = (x + (*tint_module_vars.v711));
+  x = (x + (*tint_module_vars.v712));
+  x = (x + (*tint_module_vars.v713));
+  x = (x + (*tint_module_vars.v714));
+  x = (x + (*tint_module_vars.v715));
+  x = (x + (*tint_module_vars.v716));
+  x = (x + (*tint_module_vars.v717));
+  x = (x + (*tint_module_vars.v718));
+  x = (x + (*tint_module_vars.v719));
+  x = (x + (*tint_module_vars.v720));
+  x = (x + (*tint_module_vars.v721));
+  x = (x + (*tint_module_vars.v722));
+  x = (x + (*tint_module_vars.v723));
+  x = (x + (*tint_module_vars.v724));
+  x = (x + (*tint_module_vars.v725));
+  x = (x + (*tint_module_vars.v726));
+  x = (x + (*tint_module_vars.v727));
+  x = (x + (*tint_module_vars.v728));
+  x = (x + (*tint_module_vars.v729));
+  x = (x + (*tint_module_vars.v730));
+  x = (x + (*tint_module_vars.v731));
+  x = (x + (*tint_module_vars.v732));
+  x = (x + (*tint_module_vars.v733));
+  x = (x + (*tint_module_vars.v734));
+  x = (x + (*tint_module_vars.v735));
+  x = (x + (*tint_module_vars.v736));
+  x = (x + (*tint_module_vars.v737));
+  x = (x + (*tint_module_vars.v738));
+  x = (x + (*tint_module_vars.v739));
+  x = (x + (*tint_module_vars.v740));
+  x = (x + (*tint_module_vars.v741));
+  x = (x + (*tint_module_vars.v742));
+  x = (x + (*tint_module_vars.v743));
+  x = (x + (*tint_module_vars.v744));
+  x = (x + (*tint_module_vars.v745));
+  x = (x + (*tint_module_vars.v746));
+  x = (x + (*tint_module_vars.v747));
+  x = (x + (*tint_module_vars.v748));
+  x = (x + (*tint_module_vars.v749));
+  x = (x + (*tint_module_vars.v750));
+  x = (x + (*tint_module_vars.v751));
+  x = (x + (*tint_module_vars.v752));
+  x = (x + (*tint_module_vars.v753));
+  x = (x + (*tint_module_vars.v754));
+  x = (x + (*tint_module_vars.v755));
+  x = (x + (*tint_module_vars.v756));
+  x = (x + (*tint_module_vars.v757));
+  x = (x + (*tint_module_vars.v758));
+  x = (x + (*tint_module_vars.v759));
+  x = (x + (*tint_module_vars.v760));
+  x = (x + (*tint_module_vars.v761));
+  x = (x + (*tint_module_vars.v762));
+  x = (x + (*tint_module_vars.v763));
+  x = (x + (*tint_module_vars.v764));
+  x = (x + (*tint_module_vars.v765));
+  x = (x + (*tint_module_vars.v766));
+  x = (x + (*tint_module_vars.v767));
+  x = (x + (*tint_module_vars.v768));
+  x = (x + (*tint_module_vars.v769));
+  x = (x + (*tint_module_vars.v770));
+  x = (x + (*tint_module_vars.v771));
+  x = (x + (*tint_module_vars.v772));
+  x = (x + (*tint_module_vars.v773));
+  x = (x + (*tint_module_vars.v774));
+  x = (x + (*tint_module_vars.v775));
+  x = (x + (*tint_module_vars.v776));
+  x = (x + (*tint_module_vars.v777));
+  x = (x + (*tint_module_vars.v778));
+  x = (x + (*tint_module_vars.v779));
+  x = (x + (*tint_module_vars.v780));
+  x = (x + (*tint_module_vars.v781));
+  x = (x + (*tint_module_vars.v782));
+  x = (x + (*tint_module_vars.v783));
+  x = (x + (*tint_module_vars.v784));
+  x = (x + (*tint_module_vars.v785));
+  x = (x + (*tint_module_vars.v786));
+  x = (x + (*tint_module_vars.v787));
+  x = (x + (*tint_module_vars.v788));
+  x = (x + (*tint_module_vars.v789));
+  x = (x + (*tint_module_vars.v790));
+  x = (x + (*tint_module_vars.v791));
+  x = (x + (*tint_module_vars.v792));
+  x = (x + (*tint_module_vars.v793));
+  x = (x + (*tint_module_vars.v794));
+  x = (x + (*tint_module_vars.v795));
+  x = (x + (*tint_module_vars.v796));
+  x = (x + (*tint_module_vars.v797));
+  x = (x + (*tint_module_vars.v798));
+  x = (x + (*tint_module_vars.v799));
+  x = (x + (*tint_module_vars.v800));
+  x = (x + (*tint_module_vars.v801));
+  x = (x + (*tint_module_vars.v802));
+  x = (x + (*tint_module_vars.v803));
+  x = (x + (*tint_module_vars.v804));
+  x = (x + (*tint_module_vars.v805));
+  x = (x + (*tint_module_vars.v806));
+  x = (x + (*tint_module_vars.v807));
+  x = (x + (*tint_module_vars.v808));
+  x = (x + (*tint_module_vars.v809));
+  x = (x + (*tint_module_vars.v810));
+  x = (x + (*tint_module_vars.v811));
+  x = (x + (*tint_module_vars.v812));
+  x = (x + (*tint_module_vars.v813));
+  x = (x + (*tint_module_vars.v814));
+  x = (x + (*tint_module_vars.v815));
+  x = (x + (*tint_module_vars.v816));
+  x = (x + (*tint_module_vars.v817));
+  x = (x + (*tint_module_vars.v818));
+  x = (x + (*tint_module_vars.v819));
+  x = (x + (*tint_module_vars.v820));
+  x = (x + (*tint_module_vars.v821));
+  x = (x + (*tint_module_vars.v822));
+  x = (x + (*tint_module_vars.v823));
+  x = (x + (*tint_module_vars.v824));
+  x = (x + (*tint_module_vars.v825));
+  x = (x + (*tint_module_vars.v826));
+  x = (x + (*tint_module_vars.v827));
+  x = (x + (*tint_module_vars.v828));
+  x = (x + (*tint_module_vars.v829));
+  x = (x + (*tint_module_vars.v830));
+  x = (x + (*tint_module_vars.v831));
+  x = (x + (*tint_module_vars.v832));
+  x = (x + (*tint_module_vars.v833));
+  x = (x + (*tint_module_vars.v834));
+  x = (x + (*tint_module_vars.v835));
+  x = (x + (*tint_module_vars.v836));
+  x = (x + (*tint_module_vars.v837));
+  x = (x + (*tint_module_vars.v838));
+  x = (x + (*tint_module_vars.v839));
+  x = (x + (*tint_module_vars.v840));
+  x = (x + (*tint_module_vars.v841));
+  x = (x + (*tint_module_vars.v842));
+  x = (x + (*tint_module_vars.v843));
+  x = (x + (*tint_module_vars.v844));
+  x = (x + (*tint_module_vars.v845));
+  x = (x + (*tint_module_vars.v846));
+  x = (x + (*tint_module_vars.v847));
+  x = (x + (*tint_module_vars.v848));
+  x = (x + (*tint_module_vars.v849));
+  x = (x + (*tint_module_vars.v850));
+  x = (x + (*tint_module_vars.v851));
+  x = (x + (*tint_module_vars.v852));
+  x = (x + (*tint_module_vars.v853));
+  x = (x + (*tint_module_vars.v854));
+  x = (x + (*tint_module_vars.v855));
+  x = (x + (*tint_module_vars.v856));
+  x = (x + (*tint_module_vars.v857));
+  x = (x + (*tint_module_vars.v858));
+  x = (x + (*tint_module_vars.v859));
+  x = (x + (*tint_module_vars.v860));
+  x = (x + (*tint_module_vars.v861));
+  x = (x + (*tint_module_vars.v862));
+  x = (x + (*tint_module_vars.v863));
+  x = (x + (*tint_module_vars.v864));
+  x = (x + (*tint_module_vars.v865));
+  x = (x + (*tint_module_vars.v866));
+  x = (x + (*tint_module_vars.v867));
+  x = (x + (*tint_module_vars.v868));
+  x = (x + (*tint_module_vars.v869));
+  x = (x + (*tint_module_vars.v870));
+  x = (x + (*tint_module_vars.v871));
+  x = (x + (*tint_module_vars.v872));
+  x = (x + (*tint_module_vars.v873));
+  x = (x + (*tint_module_vars.v874));
+  x = (x + (*tint_module_vars.v875));
+  x = (x + (*tint_module_vars.v876));
+  x = (x + (*tint_module_vars.v877));
+  x = (x + (*tint_module_vars.v878));
+  x = (x + (*tint_module_vars.v879));
+  x = (x + (*tint_module_vars.v880));
+  x = (x + (*tint_module_vars.v881));
+  x = (x + (*tint_module_vars.v882));
+  x = (x + (*tint_module_vars.v883));
+  x = (x + (*tint_module_vars.v884));
+  x = (x + (*tint_module_vars.v885));
+  x = (x + (*tint_module_vars.v886));
+  x = (x + (*tint_module_vars.v887));
+  x = (x + (*tint_module_vars.v888));
+  x = (x + (*tint_module_vars.v889));
+  x = (x + (*tint_module_vars.v890));
+  x = (x + (*tint_module_vars.v891));
+  x = (x + (*tint_module_vars.v892));
+  x = (x + (*tint_module_vars.v893));
+  x = (x + (*tint_module_vars.v894));
+  x = (x + (*tint_module_vars.v895));
+  x = (x + (*tint_module_vars.v896));
+  x = (x + (*tint_module_vars.v897));
+  x = (x + (*tint_module_vars.v898));
+  x = (x + (*tint_module_vars.v899));
+  x = (x + (*tint_module_vars.v900));
+  x = (x + (*tint_module_vars.v901));
+  x = (x + (*tint_module_vars.v902));
+  x = (x + (*tint_module_vars.v903));
+  x = (x + (*tint_module_vars.v904));
+  x = (x + (*tint_module_vars.v905));
+  x = (x + (*tint_module_vars.v906));
+  x = (x + (*tint_module_vars.v907));
+  x = (x + (*tint_module_vars.v908));
+  x = (x + (*tint_module_vars.v909));
+  x = (x + (*tint_module_vars.v910));
+  x = (x + (*tint_module_vars.v911));
+  x = (x + (*tint_module_vars.v912));
+  x = (x + (*tint_module_vars.v913));
+  x = (x + (*tint_module_vars.v914));
+  x = (x + (*tint_module_vars.v915));
+  x = (x + (*tint_module_vars.v916));
+  x = (x + (*tint_module_vars.v917));
+  x = (x + (*tint_module_vars.v918));
+  x = (x + (*tint_module_vars.v919));
+  x = (x + (*tint_module_vars.v920));
+  x = (x + (*tint_module_vars.v921));
+  x = (x + (*tint_module_vars.v922));
+  x = (x + (*tint_module_vars.v923));
+  x = (x + (*tint_module_vars.v924));
+  x = (x + (*tint_module_vars.v925));
+  x = (x + (*tint_module_vars.v926));
+  x = (x + (*tint_module_vars.v927));
+  x = (x + (*tint_module_vars.v928));
+  x = (x + (*tint_module_vars.v929));
+  x = (x + (*tint_module_vars.v930));
+  x = (x + (*tint_module_vars.v931));
+  x = (x + (*tint_module_vars.v932));
+  x = (x + (*tint_module_vars.v933));
+  x = (x + (*tint_module_vars.v934));
+  x = (x + (*tint_module_vars.v935));
+  x = (x + (*tint_module_vars.v936));
+  x = (x + (*tint_module_vars.v937));
+  x = (x + (*tint_module_vars.v938));
+  x = (x + (*tint_module_vars.v939));
+  x = (x + (*tint_module_vars.v940));
+  x = (x + (*tint_module_vars.v941));
+  x = (x + (*tint_module_vars.v942));
+  x = (x + (*tint_module_vars.v943));
+  x = (x + (*tint_module_vars.v944));
+  x = (x + (*tint_module_vars.v945));
+  x = (x + (*tint_module_vars.v946));
+  x = (x + (*tint_module_vars.v947));
+  x = (x + (*tint_module_vars.v948));
+  x = (x + (*tint_module_vars.v949));
+  x = (x + (*tint_module_vars.v950));
+  x = (x + (*tint_module_vars.v951));
+  x = (x + (*tint_module_vars.v952));
+  x = (x + (*tint_module_vars.v953));
+  x = (x + (*tint_module_vars.v954));
+  x = (x + (*tint_module_vars.v955));
+  x = (x + (*tint_module_vars.v956));
+  x = (x + (*tint_module_vars.v957));
+  x = (x + (*tint_module_vars.v958));
+  x = (x + (*tint_module_vars.v959));
+  x = (x + (*tint_module_vars.v960));
+  x = (x + (*tint_module_vars.v961));
+  x = (x + (*tint_module_vars.v962));
+  x = (x + (*tint_module_vars.v963));
+  x = (x + (*tint_module_vars.v964));
+  x = (x + (*tint_module_vars.v965));
+  x = (x + (*tint_module_vars.v966));
+  x = (x + (*tint_module_vars.v967));
+  x = (x + (*tint_module_vars.v968));
+  x = (x + (*tint_module_vars.v969));
+  x = (x + (*tint_module_vars.v970));
+  x = (x + (*tint_module_vars.v971));
+  x = (x + (*tint_module_vars.v972));
+  x = (x + (*tint_module_vars.v973));
+  x = (x + (*tint_module_vars.v974));
+  x = (x + (*tint_module_vars.v975));
+  x = (x + (*tint_module_vars.v976));
+  x = (x + (*tint_module_vars.v977));
+  x = (x + (*tint_module_vars.v978));
+  x = (x + (*tint_module_vars.v979));
+  x = (x + (*tint_module_vars.v980));
+  x = (x + (*tint_module_vars.v981));
+  x = (x + (*tint_module_vars.v982));
+  x = (x + (*tint_module_vars.v983));
+  x = (x + (*tint_module_vars.v984));
+  x = (x + (*tint_module_vars.v985));
+  x = (x + (*tint_module_vars.v986));
+  x = (x + (*tint_module_vars.v987));
+  x = (x + (*tint_module_vars.v988));
+  x = (x + (*tint_module_vars.v989));
+  x = (x + (*tint_module_vars.v990));
+  x = (x + (*tint_module_vars.v991));
+  x = (x + (*tint_module_vars.v992));
+  x = (x + (*tint_module_vars.v993));
+  x = (x + (*tint_module_vars.v994));
+  x = (x + (*tint_module_vars.v995));
+  x = (x + (*tint_module_vars.v996));
+  x = (x + (*tint_module_vars.v997));
+  x = (x + (*tint_module_vars.v998));
+  x = (x + (*tint_module_vars.v999));
   return x;
 }
 fragment uint tint_symbol() {
-  return foo();
+  thread uint v0 = 0u;
+  thread uint v1 = 0u;
+  thread uint v2 = 0u;
+  thread uint v3 = 0u;
+  thread uint v4 = 0u;
+  thread uint v5 = 0u;
+  thread uint v6 = 0u;
+  thread uint v7 = 0u;
+  thread uint v8 = 0u;
+  thread uint v9 = 0u;
+  thread uint v10 = 0u;
+  thread uint v11 = 0u;
+  thread uint v12 = 0u;
+  thread uint v13 = 0u;
+  thread uint v14 = 0u;
+  thread uint v15 = 0u;
+  thread uint v16 = 0u;
+  thread uint v17 = 0u;
+  thread uint v18 = 0u;
+  thread uint v19 = 0u;
+  thread uint v20 = 0u;
+  thread uint v21 = 0u;
+  thread uint v22 = 0u;
+  thread uint v23 = 0u;
+  thread uint v24 = 0u;
+  thread uint v25 = 0u;
+  thread uint v26 = 0u;
+  thread uint v27 = 0u;
+  thread uint v28 = 0u;
+  thread uint v29 = 0u;
+  thread uint v30 = 0u;
+  thread uint v31 = 0u;
+  thread uint v32 = 0u;
+  thread uint v33 = 0u;
+  thread uint v34 = 0u;
+  thread uint v35 = 0u;
+  thread uint v36 = 0u;
+  thread uint v37 = 0u;
+  thread uint v38 = 0u;
+  thread uint v39 = 0u;
+  thread uint v40 = 0u;
+  thread uint v41 = 0u;
+  thread uint v42 = 0u;
+  thread uint v43 = 0u;
+  thread uint v44 = 0u;
+  thread uint v45 = 0u;
+  thread uint v46 = 0u;
+  thread uint v47 = 0u;
+  thread uint v48 = 0u;
+  thread uint v49 = 0u;
+  thread uint v50 = 0u;
+  thread uint v51 = 0u;
+  thread uint v52 = 0u;
+  thread uint v53 = 0u;
+  thread uint v54 = 0u;
+  thread uint v55 = 0u;
+  thread uint v56 = 0u;
+  thread uint v57 = 0u;
+  thread uint v58 = 0u;
+  thread uint v59 = 0u;
+  thread uint v60 = 0u;
+  thread uint v61 = 0u;
+  thread uint v62 = 0u;
+  thread uint v63 = 0u;
+  thread uint v64 = 0u;
+  thread uint v65 = 0u;
+  thread uint v66 = 0u;
+  thread uint v67 = 0u;
+  thread uint v68 = 0u;
+  thread uint v69 = 0u;
+  thread uint v70 = 0u;
+  thread uint v71 = 0u;
+  thread uint v72 = 0u;
+  thread uint v73 = 0u;
+  thread uint v74 = 0u;
+  thread uint v75 = 0u;
+  thread uint v76 = 0u;
+  thread uint v77 = 0u;
+  thread uint v78 = 0u;
+  thread uint v79 = 0u;
+  thread uint v80 = 0u;
+  thread uint v81 = 0u;
+  thread uint v82 = 0u;
+  thread uint v83 = 0u;
+  thread uint v84 = 0u;
+  thread uint v85 = 0u;
+  thread uint v86 = 0u;
+  thread uint v87 = 0u;
+  thread uint v88 = 0u;
+  thread uint v89 = 0u;
+  thread uint v90 = 0u;
+  thread uint v91 = 0u;
+  thread uint v92 = 0u;
+  thread uint v93 = 0u;
+  thread uint v94 = 0u;
+  thread uint v95 = 0u;
+  thread uint v96 = 0u;
+  thread uint v97 = 0u;
+  thread uint v98 = 0u;
+  thread uint v99 = 0u;
+  thread uint v100 = 0u;
+  thread uint v101 = 0u;
+  thread uint v102 = 0u;
+  thread uint v103 = 0u;
+  thread uint v104 = 0u;
+  thread uint v105 = 0u;
+  thread uint v106 = 0u;
+  thread uint v107 = 0u;
+  thread uint v108 = 0u;
+  thread uint v109 = 0u;
+  thread uint v110 = 0u;
+  thread uint v111 = 0u;
+  thread uint v112 = 0u;
+  thread uint v113 = 0u;
+  thread uint v114 = 0u;
+  thread uint v115 = 0u;
+  thread uint v116 = 0u;
+  thread uint v117 = 0u;
+  thread uint v118 = 0u;
+  thread uint v119 = 0u;
+  thread uint v120 = 0u;
+  thread uint v121 = 0u;
+  thread uint v122 = 0u;
+  thread uint v123 = 0u;
+  thread uint v124 = 0u;
+  thread uint v125 = 0u;
+  thread uint v126 = 0u;
+  thread uint v127 = 0u;
+  thread uint v128 = 0u;
+  thread uint v129 = 0u;
+  thread uint v130 = 0u;
+  thread uint v131 = 0u;
+  thread uint v132 = 0u;
+  thread uint v133 = 0u;
+  thread uint v134 = 0u;
+  thread uint v135 = 0u;
+  thread uint v136 = 0u;
+  thread uint v137 = 0u;
+  thread uint v138 = 0u;
+  thread uint v139 = 0u;
+  thread uint v140 = 0u;
+  thread uint v141 = 0u;
+  thread uint v142 = 0u;
+  thread uint v143 = 0u;
+  thread uint v144 = 0u;
+  thread uint v145 = 0u;
+  thread uint v146 = 0u;
+  thread uint v147 = 0u;
+  thread uint v148 = 0u;
+  thread uint v149 = 0u;
+  thread uint v150 = 0u;
+  thread uint v151 = 0u;
+  thread uint v152 = 0u;
+  thread uint v153 = 0u;
+  thread uint v154 = 0u;
+  thread uint v155 = 0u;
+  thread uint v156 = 0u;
+  thread uint v157 = 0u;
+  thread uint v158 = 0u;
+  thread uint v159 = 0u;
+  thread uint v160 = 0u;
+  thread uint v161 = 0u;
+  thread uint v162 = 0u;
+  thread uint v163 = 0u;
+  thread uint v164 = 0u;
+  thread uint v165 = 0u;
+  thread uint v166 = 0u;
+  thread uint v167 = 0u;
+  thread uint v168 = 0u;
+  thread uint v169 = 0u;
+  thread uint v170 = 0u;
+  thread uint v171 = 0u;
+  thread uint v172 = 0u;
+  thread uint v173 = 0u;
+  thread uint v174 = 0u;
+  thread uint v175 = 0u;
+  thread uint v176 = 0u;
+  thread uint v177 = 0u;
+  thread uint v178 = 0u;
+  thread uint v179 = 0u;
+  thread uint v180 = 0u;
+  thread uint v181 = 0u;
+  thread uint v182 = 0u;
+  thread uint v183 = 0u;
+  thread uint v184 = 0u;
+  thread uint v185 = 0u;
+  thread uint v186 = 0u;
+  thread uint v187 = 0u;
+  thread uint v188 = 0u;
+  thread uint v189 = 0u;
+  thread uint v190 = 0u;
+  thread uint v191 = 0u;
+  thread uint v192 = 0u;
+  thread uint v193 = 0u;
+  thread uint v194 = 0u;
+  thread uint v195 = 0u;
+  thread uint v196 = 0u;
+  thread uint v197 = 0u;
+  thread uint v198 = 0u;
+  thread uint v199 = 0u;
+  thread uint v200 = 0u;
+  thread uint v201 = 0u;
+  thread uint v202 = 0u;
+  thread uint v203 = 0u;
+  thread uint v204 = 0u;
+  thread uint v205 = 0u;
+  thread uint v206 = 0u;
+  thread uint v207 = 0u;
+  thread uint v208 = 0u;
+  thread uint v209 = 0u;
+  thread uint v210 = 0u;
+  thread uint v211 = 0u;
+  thread uint v212 = 0u;
+  thread uint v213 = 0u;
+  thread uint v214 = 0u;
+  thread uint v215 = 0u;
+  thread uint v216 = 0u;
+  thread uint v217 = 0u;
+  thread uint v218 = 0u;
+  thread uint v219 = 0u;
+  thread uint v220 = 0u;
+  thread uint v221 = 0u;
+  thread uint v222 = 0u;
+  thread uint v223 = 0u;
+  thread uint v224 = 0u;
+  thread uint v225 = 0u;
+  thread uint v226 = 0u;
+  thread uint v227 = 0u;
+  thread uint v228 = 0u;
+  thread uint v229 = 0u;
+  thread uint v230 = 0u;
+  thread uint v231 = 0u;
+  thread uint v232 = 0u;
+  thread uint v233 = 0u;
+  thread uint v234 = 0u;
+  thread uint v235 = 0u;
+  thread uint v236 = 0u;
+  thread uint v237 = 0u;
+  thread uint v238 = 0u;
+  thread uint v239 = 0u;
+  thread uint v240 = 0u;
+  thread uint v241 = 0u;
+  thread uint v242 = 0u;
+  thread uint v243 = 0u;
+  thread uint v244 = 0u;
+  thread uint v245 = 0u;
+  thread uint v246 = 0u;
+  thread uint v247 = 0u;
+  thread uint v248 = 0u;
+  thread uint v249 = 0u;
+  thread uint v250 = 0u;
+  thread uint v251 = 0u;
+  thread uint v252 = 0u;
+  thread uint v253 = 0u;
+  thread uint v254 = 0u;
+  thread uint v255 = 0u;
+  thread uint v256 = 0u;
+  thread uint v257 = 0u;
+  thread uint v258 = 0u;
+  thread uint v259 = 0u;
+  thread uint v260 = 0u;
+  thread uint v261 = 0u;
+  thread uint v262 = 0u;
+  thread uint v263 = 0u;
+  thread uint v264 = 0u;
+  thread uint v265 = 0u;
+  thread uint v266 = 0u;
+  thread uint v267 = 0u;
+  thread uint v268 = 0u;
+  thread uint v269 = 0u;
+  thread uint v270 = 0u;
+  thread uint v271 = 0u;
+  thread uint v272 = 0u;
+  thread uint v273 = 0u;
+  thread uint v274 = 0u;
+  thread uint v275 = 0u;
+  thread uint v276 = 0u;
+  thread uint v277 = 0u;
+  thread uint v278 = 0u;
+  thread uint v279 = 0u;
+  thread uint v280 = 0u;
+  thread uint v281 = 0u;
+  thread uint v282 = 0u;
+  thread uint v283 = 0u;
+  thread uint v284 = 0u;
+  thread uint v285 = 0u;
+  thread uint v286 = 0u;
+  thread uint v287 = 0u;
+  thread uint v288 = 0u;
+  thread uint v289 = 0u;
+  thread uint v290 = 0u;
+  thread uint v291 = 0u;
+  thread uint v292 = 0u;
+  thread uint v293 = 0u;
+  thread uint v294 = 0u;
+  thread uint v295 = 0u;
+  thread uint v296 = 0u;
+  thread uint v297 = 0u;
+  thread uint v298 = 0u;
+  thread uint v299 = 0u;
+  thread uint v300 = 0u;
+  thread uint v301 = 0u;
+  thread uint v302 = 0u;
+  thread uint v303 = 0u;
+  thread uint v304 = 0u;
+  thread uint v305 = 0u;
+  thread uint v306 = 0u;
+  thread uint v307 = 0u;
+  thread uint v308 = 0u;
+  thread uint v309 = 0u;
+  thread uint v310 = 0u;
+  thread uint v311 = 0u;
+  thread uint v312 = 0u;
+  thread uint v313 = 0u;
+  thread uint v314 = 0u;
+  thread uint v315 = 0u;
+  thread uint v316 = 0u;
+  thread uint v317 = 0u;
+  thread uint v318 = 0u;
+  thread uint v319 = 0u;
+  thread uint v320 = 0u;
+  thread uint v321 = 0u;
+  thread uint v322 = 0u;
+  thread uint v323 = 0u;
+  thread uint v324 = 0u;
+  thread uint v325 = 0u;
+  thread uint v326 = 0u;
+  thread uint v327 = 0u;
+  thread uint v328 = 0u;
+  thread uint v329 = 0u;
+  thread uint v330 = 0u;
+  thread uint v331 = 0u;
+  thread uint v332 = 0u;
+  thread uint v333 = 0u;
+  thread uint v334 = 0u;
+  thread uint v335 = 0u;
+  thread uint v336 = 0u;
+  thread uint v337 = 0u;
+  thread uint v338 = 0u;
+  thread uint v339 = 0u;
+  thread uint v340 = 0u;
+  thread uint v341 = 0u;
+  thread uint v342 = 0u;
+  thread uint v343 = 0u;
+  thread uint v344 = 0u;
+  thread uint v345 = 0u;
+  thread uint v346 = 0u;
+  thread uint v347 = 0u;
+  thread uint v348 = 0u;
+  thread uint v349 = 0u;
+  thread uint v350 = 0u;
+  thread uint v351 = 0u;
+  thread uint v352 = 0u;
+  thread uint v353 = 0u;
+  thread uint v354 = 0u;
+  thread uint v355 = 0u;
+  thread uint v356 = 0u;
+  thread uint v357 = 0u;
+  thread uint v358 = 0u;
+  thread uint v359 = 0u;
+  thread uint v360 = 0u;
+  thread uint v361 = 0u;
+  thread uint v362 = 0u;
+  thread uint v363 = 0u;
+  thread uint v364 = 0u;
+  thread uint v365 = 0u;
+  thread uint v366 = 0u;
+  thread uint v367 = 0u;
+  thread uint v368 = 0u;
+  thread uint v369 = 0u;
+  thread uint v370 = 0u;
+  thread uint v371 = 0u;
+  thread uint v372 = 0u;
+  thread uint v373 = 0u;
+  thread uint v374 = 0u;
+  thread uint v375 = 0u;
+  thread uint v376 = 0u;
+  thread uint v377 = 0u;
+  thread uint v378 = 0u;
+  thread uint v379 = 0u;
+  thread uint v380 = 0u;
+  thread uint v381 = 0u;
+  thread uint v382 = 0u;
+  thread uint v383 = 0u;
+  thread uint v384 = 0u;
+  thread uint v385 = 0u;
+  thread uint v386 = 0u;
+  thread uint v387 = 0u;
+  thread uint v388 = 0u;
+  thread uint v389 = 0u;
+  thread uint v390 = 0u;
+  thread uint v391 = 0u;
+  thread uint v392 = 0u;
+  thread uint v393 = 0u;
+  thread uint v394 = 0u;
+  thread uint v395 = 0u;
+  thread uint v396 = 0u;
+  thread uint v397 = 0u;
+  thread uint v398 = 0u;
+  thread uint v399 = 0u;
+  thread uint v400 = 0u;
+  thread uint v401 = 0u;
+  thread uint v402 = 0u;
+  thread uint v403 = 0u;
+  thread uint v404 = 0u;
+  thread uint v405 = 0u;
+  thread uint v406 = 0u;
+  thread uint v407 = 0u;
+  thread uint v408 = 0u;
+  thread uint v409 = 0u;
+  thread uint v410 = 0u;
+  thread uint v411 = 0u;
+  thread uint v412 = 0u;
+  thread uint v413 = 0u;
+  thread uint v414 = 0u;
+  thread uint v415 = 0u;
+  thread uint v416 = 0u;
+  thread uint v417 = 0u;
+  thread uint v418 = 0u;
+  thread uint v419 = 0u;
+  thread uint v420 = 0u;
+  thread uint v421 = 0u;
+  thread uint v422 = 0u;
+  thread uint v423 = 0u;
+  thread uint v424 = 0u;
+  thread uint v425 = 0u;
+  thread uint v426 = 0u;
+  thread uint v427 = 0u;
+  thread uint v428 = 0u;
+  thread uint v429 = 0u;
+  thread uint v430 = 0u;
+  thread uint v431 = 0u;
+  thread uint v432 = 0u;
+  thread uint v433 = 0u;
+  thread uint v434 = 0u;
+  thread uint v435 = 0u;
+  thread uint v436 = 0u;
+  thread uint v437 = 0u;
+  thread uint v438 = 0u;
+  thread uint v439 = 0u;
+  thread uint v440 = 0u;
+  thread uint v441 = 0u;
+  thread uint v442 = 0u;
+  thread uint v443 = 0u;
+  thread uint v444 = 0u;
+  thread uint v445 = 0u;
+  thread uint v446 = 0u;
+  thread uint v447 = 0u;
+  thread uint v448 = 0u;
+  thread uint v449 = 0u;
+  thread uint v450 = 0u;
+  thread uint v451 = 0u;
+  thread uint v452 = 0u;
+  thread uint v453 = 0u;
+  thread uint v454 = 0u;
+  thread uint v455 = 0u;
+  thread uint v456 = 0u;
+  thread uint v457 = 0u;
+  thread uint v458 = 0u;
+  thread uint v459 = 0u;
+  thread uint v460 = 0u;
+  thread uint v461 = 0u;
+  thread uint v462 = 0u;
+  thread uint v463 = 0u;
+  thread uint v464 = 0u;
+  thread uint v465 = 0u;
+  thread uint v466 = 0u;
+  thread uint v467 = 0u;
+  thread uint v468 = 0u;
+  thread uint v469 = 0u;
+  thread uint v470 = 0u;
+  thread uint v471 = 0u;
+  thread uint v472 = 0u;
+  thread uint v473 = 0u;
+  thread uint v474 = 0u;
+  thread uint v475 = 0u;
+  thread uint v476 = 0u;
+  thread uint v477 = 0u;
+  thread uint v478 = 0u;
+  thread uint v479 = 0u;
+  thread uint v480 = 0u;
+  thread uint v481 = 0u;
+  thread uint v482 = 0u;
+  thread uint v483 = 0u;
+  thread uint v484 = 0u;
+  thread uint v485 = 0u;
+  thread uint v486 = 0u;
+  thread uint v487 = 0u;
+  thread uint v488 = 0u;
+  thread uint v489 = 0u;
+  thread uint v490 = 0u;
+  thread uint v491 = 0u;
+  thread uint v492 = 0u;
+  thread uint v493 = 0u;
+  thread uint v494 = 0u;
+  thread uint v495 = 0u;
+  thread uint v496 = 0u;
+  thread uint v497 = 0u;
+  thread uint v498 = 0u;
+  thread uint v499 = 0u;
+  thread uint v500 = 0u;
+  thread uint v501 = 0u;
+  thread uint v502 = 0u;
+  thread uint v503 = 0u;
+  thread uint v504 = 0u;
+  thread uint v505 = 0u;
+  thread uint v506 = 0u;
+  thread uint v507 = 0u;
+  thread uint v508 = 0u;
+  thread uint v509 = 0u;
+  thread uint v510 = 0u;
+  thread uint v511 = 0u;
+  thread uint v512 = 0u;
+  thread uint v513 = 0u;
+  thread uint v514 = 0u;
+  thread uint v515 = 0u;
+  thread uint v516 = 0u;
+  thread uint v517 = 0u;
+  thread uint v518 = 0u;
+  thread uint v519 = 0u;
+  thread uint v520 = 0u;
+  thread uint v521 = 0u;
+  thread uint v522 = 0u;
+  thread uint v523 = 0u;
+  thread uint v524 = 0u;
+  thread uint v525 = 0u;
+  thread uint v526 = 0u;
+  thread uint v527 = 0u;
+  thread uint v528 = 0u;
+  thread uint v529 = 0u;
+  thread uint v530 = 0u;
+  thread uint v531 = 0u;
+  thread uint v532 = 0u;
+  thread uint v533 = 0u;
+  thread uint v534 = 0u;
+  thread uint v535 = 0u;
+  thread uint v536 = 0u;
+  thread uint v537 = 0u;
+  thread uint v538 = 0u;
+  thread uint v539 = 0u;
+  thread uint v540 = 0u;
+  thread uint v541 = 0u;
+  thread uint v542 = 0u;
+  thread uint v543 = 0u;
+  thread uint v544 = 0u;
+  thread uint v545 = 0u;
+  thread uint v546 = 0u;
+  thread uint v547 = 0u;
+  thread uint v548 = 0u;
+  thread uint v549 = 0u;
+  thread uint v550 = 0u;
+  thread uint v551 = 0u;
+  thread uint v552 = 0u;
+  thread uint v553 = 0u;
+  thread uint v554 = 0u;
+  thread uint v555 = 0u;
+  thread uint v556 = 0u;
+  thread uint v557 = 0u;
+  thread uint v558 = 0u;
+  thread uint v559 = 0u;
+  thread uint v560 = 0u;
+  thread uint v561 = 0u;
+  thread uint v562 = 0u;
+  thread uint v563 = 0u;
+  thread uint v564 = 0u;
+  thread uint v565 = 0u;
+  thread uint v566 = 0u;
+  thread uint v567 = 0u;
+  thread uint v568 = 0u;
+  thread uint v569 = 0u;
+  thread uint v570 = 0u;
+  thread uint v571 = 0u;
+  thread uint v572 = 0u;
+  thread uint v573 = 0u;
+  thread uint v574 = 0u;
+  thread uint v575 = 0u;
+  thread uint v576 = 0u;
+  thread uint v577 = 0u;
+  thread uint v578 = 0u;
+  thread uint v579 = 0u;
+  thread uint v580 = 0u;
+  thread uint v581 = 0u;
+  thread uint v582 = 0u;
+  thread uint v583 = 0u;
+  thread uint v584 = 0u;
+  thread uint v585 = 0u;
+  thread uint v586 = 0u;
+  thread uint v587 = 0u;
+  thread uint v588 = 0u;
+  thread uint v589 = 0u;
+  thread uint v590 = 0u;
+  thread uint v591 = 0u;
+  thread uint v592 = 0u;
+  thread uint v593 = 0u;
+  thread uint v594 = 0u;
+  thread uint v595 = 0u;
+  thread uint v596 = 0u;
+  thread uint v597 = 0u;
+  thread uint v598 = 0u;
+  thread uint v599 = 0u;
+  thread uint v600 = 0u;
+  thread uint v601 = 0u;
+  thread uint v602 = 0u;
+  thread uint v603 = 0u;
+  thread uint v604 = 0u;
+  thread uint v605 = 0u;
+  thread uint v606 = 0u;
+  thread uint v607 = 0u;
+  thread uint v608 = 0u;
+  thread uint v609 = 0u;
+  thread uint v610 = 0u;
+  thread uint v611 = 0u;
+  thread uint v612 = 0u;
+  thread uint v613 = 0u;
+  thread uint v614 = 0u;
+  thread uint v615 = 0u;
+  thread uint v616 = 0u;
+  thread uint v617 = 0u;
+  thread uint v618 = 0u;
+  thread uint v619 = 0u;
+  thread uint v620 = 0u;
+  thread uint v621 = 0u;
+  thread uint v622 = 0u;
+  thread uint v623 = 0u;
+  thread uint v624 = 0u;
+  thread uint v625 = 0u;
+  thread uint v626 = 0u;
+  thread uint v627 = 0u;
+  thread uint v628 = 0u;
+  thread uint v629 = 0u;
+  thread uint v630 = 0u;
+  thread uint v631 = 0u;
+  thread uint v632 = 0u;
+  thread uint v633 = 0u;
+  thread uint v634 = 0u;
+  thread uint v635 = 0u;
+  thread uint v636 = 0u;
+  thread uint v637 = 0u;
+  thread uint v638 = 0u;
+  thread uint v639 = 0u;
+  thread uint v640 = 0u;
+  thread uint v641 = 0u;
+  thread uint v642 = 0u;
+  thread uint v643 = 0u;
+  thread uint v644 = 0u;
+  thread uint v645 = 0u;
+  thread uint v646 = 0u;
+  thread uint v647 = 0u;
+  thread uint v648 = 0u;
+  thread uint v649 = 0u;
+  thread uint v650 = 0u;
+  thread uint v651 = 0u;
+  thread uint v652 = 0u;
+  thread uint v653 = 0u;
+  thread uint v654 = 0u;
+  thread uint v655 = 0u;
+  thread uint v656 = 0u;
+  thread uint v657 = 0u;
+  thread uint v658 = 0u;
+  thread uint v659 = 0u;
+  thread uint v660 = 0u;
+  thread uint v661 = 0u;
+  thread uint v662 = 0u;
+  thread uint v663 = 0u;
+  thread uint v664 = 0u;
+  thread uint v665 = 0u;
+  thread uint v666 = 0u;
+  thread uint v667 = 0u;
+  thread uint v668 = 0u;
+  thread uint v669 = 0u;
+  thread uint v670 = 0u;
+  thread uint v671 = 0u;
+  thread uint v672 = 0u;
+  thread uint v673 = 0u;
+  thread uint v674 = 0u;
+  thread uint v675 = 0u;
+  thread uint v676 = 0u;
+  thread uint v677 = 0u;
+  thread uint v678 = 0u;
+  thread uint v679 = 0u;
+  thread uint v680 = 0u;
+  thread uint v681 = 0u;
+  thread uint v682 = 0u;
+  thread uint v683 = 0u;
+  thread uint v684 = 0u;
+  thread uint v685 = 0u;
+  thread uint v686 = 0u;
+  thread uint v687 = 0u;
+  thread uint v688 = 0u;
+  thread uint v689 = 0u;
+  thread uint v690 = 0u;
+  thread uint v691 = 0u;
+  thread uint v692 = 0u;
+  thread uint v693 = 0u;
+  thread uint v694 = 0u;
+  thread uint v695 = 0u;
+  thread uint v696 = 0u;
+  thread uint v697 = 0u;
+  thread uint v698 = 0u;
+  thread uint v699 = 0u;
+  thread uint v700 = 0u;
+  thread uint v701 = 0u;
+  thread uint v702 = 0u;
+  thread uint v703 = 0u;
+  thread uint v704 = 0u;
+  thread uint v705 = 0u;
+  thread uint v706 = 0u;
+  thread uint v707 = 0u;
+  thread uint v708 = 0u;
+  thread uint v709 = 0u;
+  thread uint v710 = 0u;
+  thread uint v711 = 0u;
+  thread uint v712 = 0u;
+  thread uint v713 = 0u;
+  thread uint v714 = 0u;
+  thread uint v715 = 0u;
+  thread uint v716 = 0u;
+  thread uint v717 = 0u;
+  thread uint v718 = 0u;
+  thread uint v719 = 0u;
+  thread uint v720 = 0u;
+  thread uint v721 = 0u;
+  thread uint v722 = 0u;
+  thread uint v723 = 0u;
+  thread uint v724 = 0u;
+  thread uint v725 = 0u;
+  thread uint v726 = 0u;
+  thread uint v727 = 0u;
+  thread uint v728 = 0u;
+  thread uint v729 = 0u;
+  thread uint v730 = 0u;
+  thread uint v731 = 0u;
+  thread uint v732 = 0u;
+  thread uint v733 = 0u;
+  thread uint v734 = 0u;
+  thread uint v735 = 0u;
+  thread uint v736 = 0u;
+  thread uint v737 = 0u;
+  thread uint v738 = 0u;
+  thread uint v739 = 0u;
+  thread uint v740 = 0u;
+  thread uint v741 = 0u;
+  thread uint v742 = 0u;
+  thread uint v743 = 0u;
+  thread uint v744 = 0u;
+  thread uint v745 = 0u;
+  thread uint v746 = 0u;
+  thread uint v747 = 0u;
+  thread uint v748 = 0u;
+  thread uint v749 = 0u;
+  thread uint v750 = 0u;
+  thread uint v751 = 0u;
+  thread uint v752 = 0u;
+  thread uint v753 = 0u;
+  thread uint v754 = 0u;
+  thread uint v755 = 0u;
+  thread uint v756 = 0u;
+  thread uint v757 = 0u;
+  thread uint v758 = 0u;
+  thread uint v759 = 0u;
+  thread uint v760 = 0u;
+  thread uint v761 = 0u;
+  thread uint v762 = 0u;
+  thread uint v763 = 0u;
+  thread uint v764 = 0u;
+  thread uint v765 = 0u;
+  thread uint v766 = 0u;
+  thread uint v767 = 0u;
+  thread uint v768 = 0u;
+  thread uint v769 = 0u;
+  thread uint v770 = 0u;
+  thread uint v771 = 0u;
+  thread uint v772 = 0u;
+  thread uint v773 = 0u;
+  thread uint v774 = 0u;
+  thread uint v775 = 0u;
+  thread uint v776 = 0u;
+  thread uint v777 = 0u;
+  thread uint v778 = 0u;
+  thread uint v779 = 0u;
+  thread uint v780 = 0u;
+  thread uint v781 = 0u;
+  thread uint v782 = 0u;
+  thread uint v783 = 0u;
+  thread uint v784 = 0u;
+  thread uint v785 = 0u;
+  thread uint v786 = 0u;
+  thread uint v787 = 0u;
+  thread uint v788 = 0u;
+  thread uint v789 = 0u;
+  thread uint v790 = 0u;
+  thread uint v791 = 0u;
+  thread uint v792 = 0u;
+  thread uint v793 = 0u;
+  thread uint v794 = 0u;
+  thread uint v795 = 0u;
+  thread uint v796 = 0u;
+  thread uint v797 = 0u;
+  thread uint v798 = 0u;
+  thread uint v799 = 0u;
+  thread uint v800 = 0u;
+  thread uint v801 = 0u;
+  thread uint v802 = 0u;
+  thread uint v803 = 0u;
+  thread uint v804 = 0u;
+  thread uint v805 = 0u;
+  thread uint v806 = 0u;
+  thread uint v807 = 0u;
+  thread uint v808 = 0u;
+  thread uint v809 = 0u;
+  thread uint v810 = 0u;
+  thread uint v811 = 0u;
+  thread uint v812 = 0u;
+  thread uint v813 = 0u;
+  thread uint v814 = 0u;
+  thread uint v815 = 0u;
+  thread uint v816 = 0u;
+  thread uint v817 = 0u;
+  thread uint v818 = 0u;
+  thread uint v819 = 0u;
+  thread uint v820 = 0u;
+  thread uint v821 = 0u;
+  thread uint v822 = 0u;
+  thread uint v823 = 0u;
+  thread uint v824 = 0u;
+  thread uint v825 = 0u;
+  thread uint v826 = 0u;
+  thread uint v827 = 0u;
+  thread uint v828 = 0u;
+  thread uint v829 = 0u;
+  thread uint v830 = 0u;
+  thread uint v831 = 0u;
+  thread uint v832 = 0u;
+  thread uint v833 = 0u;
+  thread uint v834 = 0u;
+  thread uint v835 = 0u;
+  thread uint v836 = 0u;
+  thread uint v837 = 0u;
+  thread uint v838 = 0u;
+  thread uint v839 = 0u;
+  thread uint v840 = 0u;
+  thread uint v841 = 0u;
+  thread uint v842 = 0u;
+  thread uint v843 = 0u;
+  thread uint v844 = 0u;
+  thread uint v845 = 0u;
+  thread uint v846 = 0u;
+  thread uint v847 = 0u;
+  thread uint v848 = 0u;
+  thread uint v849 = 0u;
+  thread uint v850 = 0u;
+  thread uint v851 = 0u;
+  thread uint v852 = 0u;
+  thread uint v853 = 0u;
+  thread uint v854 = 0u;
+  thread uint v855 = 0u;
+  thread uint v856 = 0u;
+  thread uint v857 = 0u;
+  thread uint v858 = 0u;
+  thread uint v859 = 0u;
+  thread uint v860 = 0u;
+  thread uint v861 = 0u;
+  thread uint v862 = 0u;
+  thread uint v863 = 0u;
+  thread uint v864 = 0u;
+  thread uint v865 = 0u;
+  thread uint v866 = 0u;
+  thread uint v867 = 0u;
+  thread uint v868 = 0u;
+  thread uint v869 = 0u;
+  thread uint v870 = 0u;
+  thread uint v871 = 0u;
+  thread uint v872 = 0u;
+  thread uint v873 = 0u;
+  thread uint v874 = 0u;
+  thread uint v875 = 0u;
+  thread uint v876 = 0u;
+  thread uint v877 = 0u;
+  thread uint v878 = 0u;
+  thread uint v879 = 0u;
+  thread uint v880 = 0u;
+  thread uint v881 = 0u;
+  thread uint v882 = 0u;
+  thread uint v883 = 0u;
+  thread uint v884 = 0u;
+  thread uint v885 = 0u;
+  thread uint v886 = 0u;
+  thread uint v887 = 0u;
+  thread uint v888 = 0u;
+  thread uint v889 = 0u;
+  thread uint v890 = 0u;
+  thread uint v891 = 0u;
+  thread uint v892 = 0u;
+  thread uint v893 = 0u;
+  thread uint v894 = 0u;
+  thread uint v895 = 0u;
+  thread uint v896 = 0u;
+  thread uint v897 = 0u;
+  thread uint v898 = 0u;
+  thread uint v899 = 0u;
+  thread uint v900 = 0u;
+  thread uint v901 = 0u;
+  thread uint v902 = 0u;
+  thread uint v903 = 0u;
+  thread uint v904 = 0u;
+  thread uint v905 = 0u;
+  thread uint v906 = 0u;
+  thread uint v907 = 0u;
+  thread uint v908 = 0u;
+  thread uint v909 = 0u;
+  thread uint v910 = 0u;
+  thread uint v911 = 0u;
+  thread uint v912 = 0u;
+  thread uint v913 = 0u;
+  thread uint v914 = 0u;
+  thread uint v915 = 0u;
+  thread uint v916 = 0u;
+  thread uint v917 = 0u;
+  thread uint v918 = 0u;
+  thread uint v919 = 0u;
+  thread uint v920 = 0u;
+  thread uint v921 = 0u;
+  thread uint v922 = 0u;
+  thread uint v923 = 0u;
+  thread uint v924 = 0u;
+  thread uint v925 = 0u;
+  thread uint v926 = 0u;
+  thread uint v927 = 0u;
+  thread uint v928 = 0u;
+  thread uint v929 = 0u;
+  thread uint v930 = 0u;
+  thread uint v931 = 0u;
+  thread uint v932 = 0u;
+  thread uint v933 = 0u;
+  thread uint v934 = 0u;
+  thread uint v935 = 0u;
+  thread uint v936 = 0u;
+  thread uint v937 = 0u;
+  thread uint v938 = 0u;
+  thread uint v939 = 0u;
+  thread uint v940 = 0u;
+  thread uint v941 = 0u;
+  thread uint v942 = 0u;
+  thread uint v943 = 0u;
+  thread uint v944 = 0u;
+  thread uint v945 = 0u;
+  thread uint v946 = 0u;
+  thread uint v947 = 0u;
+  thread uint v948 = 0u;
+  thread uint v949 = 0u;
+  thread uint v950 = 0u;
+  thread uint v951 = 0u;
+  thread uint v952 = 0u;
+  thread uint v953 = 0u;
+  thread uint v954 = 0u;
+  thread uint v955 = 0u;
+  thread uint v956 = 0u;
+  thread uint v957 = 0u;
+  thread uint v958 = 0u;
+  thread uint v959 = 0u;
+  thread uint v960 = 0u;
+  thread uint v961 = 0u;
+  thread uint v962 = 0u;
+  thread uint v963 = 0u;
+  thread uint v964 = 0u;
+  thread uint v965 = 0u;
+  thread uint v966 = 0u;
+  thread uint v967 = 0u;
+  thread uint v968 = 0u;
+  thread uint v969 = 0u;
+  thread uint v970 = 0u;
+  thread uint v971 = 0u;
+  thread uint v972 = 0u;
+  thread uint v973 = 0u;
+  thread uint v974 = 0u;
+  thread uint v975 = 0u;
+  thread uint v976 = 0u;
+  thread uint v977 = 0u;
+  thread uint v978 = 0u;
+  thread uint v979 = 0u;
+  thread uint v980 = 0u;
+  thread uint v981 = 0u;
+  thread uint v982 = 0u;
+  thread uint v983 = 0u;
+  thread uint v984 = 0u;
+  thread uint v985 = 0u;
+  thread uint v986 = 0u;
+  thread uint v987 = 0u;
+  thread uint v988 = 0u;
+  thread uint v989 = 0u;
+  thread uint v990 = 0u;
+  thread uint v991 = 0u;
+  thread uint v992 = 0u;
+  thread uint v993 = 0u;
+  thread uint v994 = 0u;
+  thread uint v995 = 0u;
+  thread uint v996 = 0u;
+  thread uint v997 = 0u;
+  thread uint v998 = 0u;
+  thread uint v999 = 0u;
+  tint_module_vars_struct const tint_module_vars = {.v0=(&v0), .v1=(&v1), .v2=(&v2), .v3=(&v3), .v4=(&v4), .v5=(&v5), .v6=(&v6), .v7=(&v7), .v8=(&v8), .v9=(&v9), .v10=(&v10), .v11=(&v11), .v12=(&v12), .v13=(&v13), .v14=(&v14), .v15=(&v15), .v16=(&v16), .v17=(&v17), .v18=(&v18), .v19=(&v19), .v20=(&v20), .v21=(&v21), .v22=(&v22), .v23=(&v23), .v24=(&v24), .v25=(&v25), .v26=(&v26), .v27=(&v27), .v28=(&v28), .v29=(&v29), .v30=(&v30), .v31=(&v31), .v32=(&v32), .v33=(&v33), .v34=(&v34), .v35=(&v35), .v36=(&v36), .v37=(&v37), .v38=(&v38), .v39=(&v39), .v40=(&v40), .v41=(&v41), .v42=(&v42), .v43=(&v43), .v44=(&v44), .v45=(&v45), .v46=(&v46), .v47=(&v47), .v48=(&v48), .v49=(&v49), .v50=(&v50), .v51=(&v51), .v52=(&v52), .v53=(&v53), .v54=(&v54), .v55=(&v55), .v56=(&v56), .v57=(&v57), .v58=(&v58), .v59=(&v59), .v60=(&v60), .v61=(&v61), .v62=(&v62), .v63=(&v63), .v64=(&v64), .v65=(&v65), .v66=(&v66), .v67=(&v67), .v68=(&v68), .v69=(&v69), .v70=(&v70), .v71=(&v71), .v72=(&v72), .v73=(&v73), .v74=(&v74), .v75=(&v75), .v76=(&v76), .v77=(&v77), .v78=(&v78), .v79=(&v79), .v80=(&v80), .v81=(&v81), .v82=(&v82), .v83=(&v83), .v84=(&v84), .v85=(&v85), .v86=(&v86), .v87=(&v87), .v88=(&v88), .v89=(&v89), .v90=(&v90), .v91=(&v91), .v92=(&v92), .v93=(&v93), .v94=(&v94), .v95=(&v95), .v96=(&v96), .v97=(&v97), .v98=(&v98), .v99=(&v99), .v100=(&v100), .v101=(&v101), .v102=(&v102), .v103=(&v103), .v104=(&v104), .v105=(&v105), .v106=(&v106), .v107=(&v107), .v108=(&v108), .v109=(&v109), .v110=(&v110), .v111=(&v111), .v112=(&v112), .v113=(&v113), .v114=(&v114), .v115=(&v115), .v116=(&v116), .v117=(&v117), .v118=(&v118), .v119=(&v119), .v120=(&v120), .v121=(&v121), .v122=(&v122), .v123=(&v123), .v124=(&v124), .v125=(&v125), .v126=(&v126), .v127=(&v127), .v128=(&v128), .v129=(&v129), .v130=(&v130), .v131=(&v131), .v132=(&v132), .v133=(&v133), .v134=(&v134), .v135=(&v135), .v136=(&v136), .v137=(&v137), .v138=(&v138), .v139=(&v139), .v140=(&v140), .v141=(&v141), .v142=(&v142), .v143=(&v143), .v144=(&v144), .v145=(&v145), .v146=(&v146), .v147=(&v147), .v148=(&v148), .v149=(&v149), .v150=(&v150), .v151=(&v151), .v152=(&v152), .v153=(&v153), .v154=(&v154), .v155=(&v155), .v156=(&v156), .v157=(&v157), .v158=(&v158), .v159=(&v159), .v160=(&v160), .v161=(&v161), .v162=(&v162), .v163=(&v163), .v164=(&v164), .v165=(&v165), .v166=(&v166), .v167=(&v167), .v168=(&v168), .v169=(&v169), .v170=(&v170), .v171=(&v171), .v172=(&v172), .v173=(&v173), .v174=(&v174), .v175=(&v175), .v176=(&v176), .v177=(&v177), .v178=(&v178), .v179=(&v179), .v180=(&v180), .v181=(&v181), .v182=(&v182), .v183=(&v183), .v184=(&v184), .v185=(&v185), .v186=(&v186), .v187=(&v187), .v188=(&v188), .v189=(&v189), .v190=(&v190), .v191=(&v191), .v192=(&v192), .v193=(&v193), .v194=(&v194), .v195=(&v195), .v196=(&v196), .v197=(&v197), .v198=(&v198), .v199=(&v199), .v200=(&v200), .v201=(&v201), .v202=(&v202), .v203=(&v203), .v204=(&v204), .v205=(&v205), .v206=(&v206), .v207=(&v207), .v208=(&v208), .v209=(&v209), .v210=(&v210), .v211=(&v211), .v212=(&v212), .v213=(&v213), .v214=(&v214), .v215=(&v215), .v216=(&v216), .v217=(&v217), .v218=(&v218), .v219=(&v219), .v220=(&v220), .v221=(&v221), .v222=(&v222), .v223=(&v223), .v224=(&v224), .v225=(&v225), .v226=(&v226), .v227=(&v227), .v228=(&v228), .v229=(&v229), .v230=(&v230), .v231=(&v231), .v232=(&v232), .v233=(&v233), .v234=(&v234), .v235=(&v235), .v236=(&v236), .v237=(&v237), .v238=(&v238), .v239=(&v239), .v240=(&v240), .v241=(&v241), .v242=(&v242), .v243=(&v243), .v244=(&v244), .v245=(&v245), .v246=(&v246), .v247=(&v247), .v248=(&v248), .v249=(&v249), .v250=(&v250), .v251=(&v251), .v252=(&v252), .v253=(&v253), .v254=(&v254), .v255=(&v255), .v256=(&v256), .v257=(&v257), .v258=(&v258), .v259=(&v259), .v260=(&v260), .v261=(&v261), .v262=(&v262), .v263=(&v263), .v264=(&v264), .v265=(&v265), .v266=(&v266), .v267=(&v267), .v268=(&v268), .v269=(&v269), .v270=(&v270), .v271=(&v271), .v272=(&v272), .v273=(&v273), .v274=(&v274), .v275=(&v275), .v276=(&v276), .v277=(&v277), .v278=(&v278), .v279=(&v279), .v280=(&v280), .v281=(&v281), .v282=(&v282), .v283=(&v283), .v284=(&v284), .v285=(&v285), .v286=(&v286), .v287=(&v287), .v288=(&v288), .v289=(&v289), .v290=(&v290), .v291=(&v291), .v292=(&v292), .v293=(&v293), .v294=(&v294), .v295=(&v295), .v296=(&v296), .v297=(&v297), .v298=(&v298), .v299=(&v299), .v300=(&v300), .v301=(&v301), .v302=(&v302), .v303=(&v303), .v304=(&v304), .v305=(&v305), .v306=(&v306), .v307=(&v307), .v308=(&v308), .v309=(&v309), .v310=(&v310), .v311=(&v311), .v312=(&v312), .v313=(&v313), .v314=(&v314), .v315=(&v315), .v316=(&v316), .v317=(&v317), .v318=(&v318), .v319=(&v319), .v320=(&v320), .v321=(&v321), .v322=(&v322), .v323=(&v323), .v324=(&v324), .v325=(&v325), .v326=(&v326), .v327=(&v327), .v328=(&v328), .v329=(&v329), .v330=(&v330), .v331=(&v331), .v332=(&v332), .v333=(&v333), .v334=(&v334), .v335=(&v335), .v336=(&v336), .v337=(&v337), .v338=(&v338), .v339=(&v339), .v340=(&v340), .v341=(&v341), .v342=(&v342), .v343=(&v343), .v344=(&v344), .v345=(&v345), .v346=(&v346), .v347=(&v347), .v348=(&v348), .v349=(&v349), .v350=(&v350), .v351=(&v351), .v352=(&v352), .v353=(&v353), .v354=(&v354), .v355=(&v355), .v356=(&v356), .v357=(&v357), .v358=(&v358), .v359=(&v359), .v360=(&v360), .v361=(&v361), .v362=(&v362), .v363=(&v363), .v364=(&v364), .v365=(&v365), .v366=(&v366), .v367=(&v367), .v368=(&v368), .v369=(&v369), .v370=(&v370), .v371=(&v371), .v372=(&v372), .v373=(&v373), .v374=(&v374), .v375=(&v375), .v376=(&v376), .v377=(&v377), .v378=(&v378), .v379=(&v379), .v380=(&v380), .v381=(&v381), .v382=(&v382), .v383=(&v383), .v384=(&v384), .v385=(&v385), .v386=(&v386), .v387=(&v387), .v388=(&v388), .v389=(&v389), .v390=(&v390), .v391=(&v391), .v392=(&v392), .v393=(&v393), .v394=(&v394), .v395=(&v395), .v396=(&v396), .v397=(&v397), .v398=(&v398), .v399=(&v399), .v400=(&v400), .v401=(&v401), .v402=(&v402), .v403=(&v403), .v404=(&v404), .v405=(&v405), .v406=(&v406), .v407=(&v407), .v408=(&v408), .v409=(&v409), .v410=(&v410), .v411=(&v411), .v412=(&v412), .v413=(&v413), .v414=(&v414), .v415=(&v415), .v416=(&v416), .v417=(&v417), .v418=(&v418), .v419=(&v419), .v420=(&v420), .v421=(&v421), .v422=(&v422), .v423=(&v423), .v424=(&v424), .v425=(&v425), .v426=(&v426), .v427=(&v427), .v428=(&v428), .v429=(&v429), .v430=(&v430), .v431=(&v431), .v432=(&v432), .v433=(&v433), .v434=(&v434), .v435=(&v435), .v436=(&v436), .v437=(&v437), .v438=(&v438), .v439=(&v439), .v440=(&v440), .v441=(&v441), .v442=(&v442), .v443=(&v443), .v444=(&v444), .v445=(&v445), .v446=(&v446), .v447=(&v447), .v448=(&v448), .v449=(&v449), .v450=(&v450), .v451=(&v451), .v452=(&v452), .v453=(&v453), .v454=(&v454), .v455=(&v455), .v456=(&v456), .v457=(&v457), .v458=(&v458), .v459=(&v459), .v460=(&v460), .v461=(&v461), .v462=(&v462), .v463=(&v463), .v464=(&v464), .v465=(&v465), .v466=(&v466), .v467=(&v467), .v468=(&v468), .v469=(&v469), .v470=(&v470), .v471=(&v471), .v472=(&v472), .v473=(&v473), .v474=(&v474), .v475=(&v475), .v476=(&v476), .v477=(&v477), .v478=(&v478), .v479=(&v479), .v480=(&v480), .v481=(&v481), .v482=(&v482), .v483=(&v483), .v484=(&v484), .v485=(&v485), .v486=(&v486), .v487=(&v487), .v488=(&v488), .v489=(&v489), .v490=(&v490), .v491=(&v491), .v492=(&v492), .v493=(&v493), .v494=(&v494), .v495=(&v495), .v496=(&v496), .v497=(&v497), .v498=(&v498), .v499=(&v499), .v500=(&v500), .v501=(&v501), .v502=(&v502), .v503=(&v503), .v504=(&v504), .v505=(&v505), .v506=(&v506), .v507=(&v507), .v508=(&v508), .v509=(&v509), .v510=(&v510), .v511=(&v511), .v512=(&v512), .v513=(&v513), .v514=(&v514), .v515=(&v515), .v516=(&v516), .v517=(&v517), .v518=(&v518), .v519=(&v519), .v520=(&v520), .v521=(&v521), .v522=(&v522), .v523=(&v523), .v524=(&v524), .v525=(&v525), .v526=(&v526), .v527=(&v527), .v528=(&v528), .v529=(&v529), .v530=(&v530), .v531=(&v531), .v532=(&v532), .v533=(&v533), .v534=(&v534), .v535=(&v535), .v536=(&v536), .v537=(&v537), .v538=(&v538), .v539=(&v539), .v540=(&v540), .v541=(&v541), .v542=(&v542), .v543=(&v543), .v544=(&v544), .v545=(&v545), .v546=(&v546), .v547=(&v547), .v548=(&v548), .v549=(&v549), .v550=(&v550), .v551=(&v551), .v552=(&v552), .v553=(&v553), .v554=(&v554), .v555=(&v555), .v556=(&v556), .v557=(&v557), .v558=(&v558), .v559=(&v559), .v560=(&v560), .v561=(&v561), .v562=(&v562), .v563=(&v563), .v564=(&v564), .v565=(&v565), .v566=(&v566), .v567=(&v567), .v568=(&v568), .v569=(&v569), .v570=(&v570), .v571=(&v571), .v572=(&v572), .v573=(&v573), .v574=(&v574), .v575=(&v575), .v576=(&v576), .v577=(&v577), .v578=(&v578), .v579=(&v579), .v580=(&v580), .v581=(&v581), .v582=(&v582), .v583=(&v583), .v584=(&v584), .v585=(&v585), .v586=(&v586), .v587=(&v587), .v588=(&v588), .v589=(&v589), .v590=(&v590), .v591=(&v591), .v592=(&v592), .v593=(&v593), .v594=(&v594), .v595=(&v595), .v596=(&v596), .v597=(&v597), .v598=(&v598), .v599=(&v599), .v600=(&v600), .v601=(&v601), .v602=(&v602), .v603=(&v603), .v604=(&v604), .v605=(&v605), .v606=(&v606), .v607=(&v607), .v608=(&v608), .v609=(&v609), .v610=(&v610), .v611=(&v611), .v612=(&v612), .v613=(&v613), .v614=(&v614), .v615=(&v615), .v616=(&v616), .v617=(&v617), .v618=(&v618), .v619=(&v619), .v620=(&v620), .v621=(&v621), .v622=(&v622), .v623=(&v623), .v624=(&v624), .v625=(&v625), .v626=(&v626), .v627=(&v627), .v628=(&v628), .v629=(&v629), .v630=(&v630), .v631=(&v631), .v632=(&v632), .v633=(&v633), .v634=(&v634), .v635=(&v635), .v636=(&v636), .v637=(&v637), .v638=(&v638), .v639=(&v639), .v640=(&v640), .v641=(&v641), .v642=(&v642), .v643=(&v643), .v644=(&v644), .v645=(&v645), .v646=(&v646), .v647=(&v647), .v648=(&v648), .v649=(&v649), .v650=(&v650), .v651=(&v651), .v652=(&v652), .v653=(&v653), .v654=(&v654), .v655=(&v655), .v656=(&v656), .v657=(&v657), .v658=(&v658), .v659=(&v659), .v660=(&v660), .v661=(&v661), .v662=(&v662), .v663=(&v663), .v664=(&v664), .v665=(&v665), .v666=(&v666), .v667=(&v667), .v668=(&v668), .v669=(&v669), .v670=(&v670), .v671=(&v671), .v672=(&v672), .v673=(&v673), .v674=(&v674), .v675=(&v675), .v676=(&v676), .v677=(&v677), .v678=(&v678), .v679=(&v679), .v680=(&v680), .v681=(&v681), .v682=(&v682), .v683=(&v683), .v684=(&v684), .v685=(&v685), .v686=(&v686), .v687=(&v687), .v688=(&v688), .v689=(&v689), .v690=(&v690), .v691=(&v691), .v692=(&v692), .v693=(&v693), .v694=(&v694), .v695=(&v695), .v696=(&v696), .v697=(&v697), .v698=(&v698), .v699=(&v699), .v700=(&v700), .v701=(&v701), .v702=(&v702), .v703=(&v703), .v704=(&v704), .v705=(&v705), .v706=(&v706), .v707=(&v707), .v708=(&v708), .v709=(&v709), .v710=(&v710), .v711=(&v711), .v712=(&v712), .v713=(&v713), .v714=(&v714), .v715=(&v715), .v716=(&v716), .v717=(&v717), .v718=(&v718), .v719=(&v719), .v720=(&v720), .v721=(&v721), .v722=(&v722), .v723=(&v723), .v724=(&v724), .v725=(&v725), .v726=(&v726), .v727=(&v727), .v728=(&v728), .v729=(&v729), .v730=(&v730), .v731=(&v731), .v732=(&v732), .v733=(&v733), .v734=(&v734), .v735=(&v735), .v736=(&v736), .v737=(&v737), .v738=(&v738), .v739=(&v739), .v740=(&v740), .v741=(&v741), .v742=(&v742), .v743=(&v743), .v744=(&v744), .v745=(&v745), .v746=(&v746), .v747=(&v747), .v748=(&v748), .v749=(&v749), .v750=(&v750), .v751=(&v751), .v752=(&v752), .v753=(&v753), .v754=(&v754), .v755=(&v755), .v756=(&v756), .v757=(&v757), .v758=(&v758), .v759=(&v759), .v760=(&v760), .v761=(&v761), .v762=(&v762), .v763=(&v763), .v764=(&v764), .v765=(&v765), .v766=(&v766), .v767=(&v767), .v768=(&v768), .v769=(&v769), .v770=(&v770), .v771=(&v771), .v772=(&v772), .v773=(&v773), .v774=(&v774), .v775=(&v775), .v776=(&v776), .v777=(&v777), .v778=(&v778), .v779=(&v779), .v780=(&v780), .v781=(&v781), .v782=(&v782), .v783=(&v783), .v784=(&v784), .v785=(&v785), .v786=(&v786), .v787=(&v787), .v788=(&v788), .v789=(&v789), .v790=(&v790), .v791=(&v791), .v792=(&v792), .v793=(&v793), .v794=(&v794), .v795=(&v795), .v796=(&v796), .v797=(&v797), .v798=(&v798), .v799=(&v799), .v800=(&v800), .v801=(&v801), .v802=(&v802), .v803=(&v803), .v804=(&v804), .v805=(&v805), .v806=(&v806), .v807=(&v807), .v808=(&v808), .v809=(&v809), .v810=(&v810), .v811=(&v811), .v812=(&v812), .v813=(&v813), .v814=(&v814), .v815=(&v815), .v816=(&v816), .v817=(&v817), .v818=(&v818), .v819=(&v819), .v820=(&v820), .v821=(&v821), .v822=(&v822), .v823=(&v823), .v824=(&v824), .v825=(&v825), .v826=(&v826), .v827=(&v827), .v828=(&v828), .v829=(&v829), .v830=(&v830), .v831=(&v831), .v832=(&v832), .v833=(&v833), .v834=(&v834), .v835=(&v835), .v836=(&v836), .v837=(&v837), .v838=(&v838), .v839=(&v839), .v840=(&v840), .v841=(&v841), .v842=(&v842), .v843=(&v843), .v844=(&v844), .v845=(&v845), .v846=(&v846), .v847=(&v847), .v848=(&v848), .v849=(&v849), .v850=(&v850), .v851=(&v851), .v852=(&v852), .v853=(&v853), .v854=(&v854), .v855=(&v855), .v856=(&v856), .v857=(&v857), .v858=(&v858), .v859=(&v859), .v860=(&v860), .v861=(&v861), .v862=(&v862), .v863=(&v863), .v864=(&v864), .v865=(&v865), .v866=(&v866), .v867=(&v867), .v868=(&v868), .v869=(&v869), .v870=(&v870), .v871=(&v871), .v872=(&v872), .v873=(&v873), .v874=(&v874), .v875=(&v875), .v876=(&v876), .v877=(&v877), .v878=(&v878), .v879=(&v879), .v880=(&v880), .v881=(&v881), .v882=(&v882), .v883=(&v883), .v884=(&v884), .v885=(&v885), .v886=(&v886), .v887=(&v887), .v888=(&v888), .v889=(&v889), .v890=(&v890), .v891=(&v891), .v892=(&v892), .v893=(&v893), .v894=(&v894), .v895=(&v895), .v896=(&v896), .v897=(&v897), .v898=(&v898), .v899=(&v899), .v900=(&v900), .v901=(&v901), .v902=(&v902), .v903=(&v903), .v904=(&v904), .v905=(&v905), .v906=(&v906), .v907=(&v907), .v908=(&v908), .v909=(&v909), .v910=(&v910), .v911=(&v911), .v912=(&v912), .v913=(&v913), .v914=(&v914), .v915=(&v915), .v916=(&v916), .v917=(&v917), .v918=(&v918), .v919=(&v919), .v920=(&v920), .v921=(&v921), .v922=(&v922), .v923=(&v923), .v924=(&v924), .v925=(&v925), .v926=(&v926), .v927=(&v927), .v928=(&v928), .v929=(&v929), .v930=(&v930), .v931=(&v931), .v932=(&v932), .v933=(&v933), .v934=(&v934), .v935=(&v935), .v936=(&v936), .v937=(&v937), .v938=(&v938), .v939=(&v939), .v940=(&v940), .v941=(&v941), .v942=(&v942), .v943=(&v943), .v944=(&v944), .v945=(&v945), .v946=(&v946), .v947=(&v947), .v948=(&v948), .v949=(&v949), .v950=(&v950), .v951=(&v951), .v952=(&v952), .v953=(&v953), .v954=(&v954), .v955=(&v955), .v956=(&v956), .v957=(&v957), .v958=(&v958), .v959=(&v959), .v960=(&v960), .v961=(&v961), .v962=(&v962), .v963=(&v963), .v964=(&v964), .v965=(&v965), .v966=(&v966), .v967=(&v967), .v968=(&v968), .v969=(&v969), .v970=(&v970), .v971=(&v971), .v972=(&v972), .v973=(&v973), .v974=(&v974), .v975=(&v975), .v976=(&v976), .v977=(&v977), .v978=(&v978), .v979=(&v979), .v980=(&v980), .v981=(&v981), .v982=(&v982), .v983=(&v983), .v984=(&v984), .v985=(&v985), .v986=(&v986), .v987=(&v987), .v988=(&v988), .v989=(&v989), .v990=(&v990), .v991=(&v991), .v992=(&v992), .v993=(&v993), .v994=(&v994), .v995=(&v995), .v996=(&v996), .v997=(&v997), .v998=(&v998), .v999=(&v999)};
+  return foo(tint_module_vars);
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint v0 = 0u;
-            ^
-program_source:5:13: error: program scope variable must reside in constant address space
-thread uint v1 = 0u;
-            ^
-program_source:6:13: error: program scope variable must reside in constant address space
-thread uint v2 = 0u;
-            ^
-program_source:7:13: error: program scope variable must reside in constant address space
-thread uint v3 = 0u;
-            ^
-program_source:8:13: error: program scope variable must reside in constant address space
-thread uint v4 = 0u;
-            ^
-program_source:9:13: error: program scope variable must reside in constant address space
-thread uint v5 = 0u;
-            ^
-program_source:10:13: error: program scope variable must reside in constant address space
-thread uint v6 = 0u;
-            ^
-program_source:11:13: error: program scope variable must reside in constant address space
-thread uint v7 = 0u;
-            ^
-program_source:12:13: error: program scope variable must reside in constant address space
-thread uint v8 = 0u;
-            ^
-program_source:13:13: error: program scope variable must reside in constant address space
-thread uint v9 = 0u;
-            ^
-program_source:14:13: error: program scope variable must reside in constant address space
-thread uint v10 = 0u;
-            ^
-program_source:15:13: error: program scope variable must reside in constant address space
-thread uint v11 = 0u;
-            ^
-program_source:16:13: error: program scope variable must reside in constant address space
-thread uint v12 = 0u;
-            ^
-program_source:17:13: error: program scope variable must reside in constant address space
-thread uint v13 = 0u;
-            ^
-program_source:18:13: error: program scope variable must reside in constant address space
-thread uint v14 = 0u;
-            ^
-program_source:19:13: error: program scope variable must reside in constant address space
-thread uint v15 = 0u;
-            ^
-program_source:20:13: error: program scope variable must reside in constant address space
-thread uint v16 = 0u;
-            ^
-program_source:21:13: error: program scope variable must reside in constant address space
-thread uint v17 = 0u;
-            ^
-program_source:22:13: error: program scope variable must reside in constant address space
-thread uint v18 = 0u;
-            ^
-program_source:23:13: error: program scope variable must reside in constant address space
-thread uint v19 = 0u;
-            ^
-program_source:24:13: error: program scope variable must reside in constant address space
-thread uint v20 = 0u;
-            ^
-program_source:25:13: error: program scope variable must reside in constant address space
-thread uint v21 = 0u;
-            ^
-program_source:26:13: error: program scope variable must reside in constant address space
-thread uint v22 = 0u;
-            ^
-program_source:27:13: error: program scope variable must reside in constant address space
-thread uint v23 = 0u;
-            ^
-program_source:28:13: error: program scope variable must reside in constant address space
-thread uint v24 = 0u;
-            ^
-program_source:29:13: error: program scope variable must reside in constant address space
-thread uint v25 = 0u;
-            ^
-program_source:30:13: error: program scope variable must reside in constant address space
-thread uint v26 = 0u;
-            ^
-program_source:31:13: error: program scope variable must reside in constant address space
-thread uint v27 = 0u;
-            ^
-program_source:32:13: error: program scope variable must reside in constant address space
-thread uint v28 = 0u;
-            ^
-program_source:33:13: error: program scope variable must reside in constant address space
-thread uint v29 = 0u;
-            ^
-program_source:34:13: error: program scope variable must reside in constant address space
-thread uint v30 = 0u;
-            ^
-program_source:35:13: error: program scope variable must reside in constant address space
-thread uint v31 = 0u;
-            ^
-program_source:36:13: error: program scope variable must reside in constant address space
-thread uint v32 = 0u;
-            ^
-program_source:37:13: error: program scope variable must reside in constant address space
-thread uint v33 = 0u;
-            ^
-program_source:38:13: error: program scope variable must reside in constant address space
-thread uint v34 = 0u;
-            ^
-program_source:39:13: error: program scope variable must reside in constant address space
-thread uint v35 = 0u;
-            ^
-program_source:40:13: error: program scope variable must reside in constant address space
-thread uint v36 = 0u;
-            ^
-program_source:41:13: error: program scope variable must reside in constant address space
-thread uint v37 = 0u;
-            ^
-program_source:42:13: error: program scope variable must reside in constant address space
-thread uint v38 = 0u;
-            ^
-program_source:43:13: error: program scope variable must reside in constant address space
-thread uint v39 = 0u;
-            ^
-program_source:44:13: error: program scope variable must reside in constant address space
-thread uint v40 = 0u;
-            ^
-program_source:45:13: error: program scope variable must reside in constant address space
-thread uint v41 = 0u;
-            ^
-program_source:46:13: error: program scope variable must reside in constant address space
-thread uint v42 = 0u;
-            ^
-program_source:47:13: error: program scope variable must reside in constant address space
-thread uint v43 = 0u;
-            ^
-program_source:48:13: error: program scope variable must reside in constant address space
-thread uint v44 = 0u;
-            ^
-program_source:49:13: error: program scope variable must reside in constant address space
-thread uint v45 = 0u;
-            ^
-program_source:50:13: error: program scope variable must reside in constant address space
-thread uint v46 = 0u;
-            ^
-program_source:51:13: error: program scope variable must reside in constant address space
-thread uint v47 = 0u;
-            ^
-program_source:52:13: error: program scope variable must reside in constant address space
-thread uint v48 = 0u;
-            ^
-program_source:53:13: error: program scope variable must reside in constant address space
-thread uint v49 = 0u;
-            ^
-program_source:54:13: error: program scope variable must reside in constant address space
-thread uint v50 = 0u;
-            ^
-program_source:55:13: error: program scope variable must reside in constant address space
-thread uint v51 = 0u;
-            ^
-program_source:56:13: error: program scope variable must reside in constant address space
-thread uint v52 = 0u;
-            ^
-program_source:57:13: error: program scope variable must reside in constant address space
-thread uint v53 = 0u;
-            ^
-program_source:58:13: error: program scope variable must reside in constant address space
-thread uint v54 = 0u;
-            ^
-program_source:59:13: error: program scope variable must reside in constant address space
-thread uint v55 = 0u;
-            ^
-program_source:60:13: error: program scope variable must reside in constant address space
-thread uint v56 = 0u;
-            ^
-program_source:61:13: error: program scope variable must reside in constant address space
-thread uint v57 = 0u;
-            ^
-program_source:62:13: error: program scope variable must reside in constant address space
-thread uint v58 = 0u;
-            ^
-program_source:63:13: error: program scope variable must reside in constant address space
-thread uint v59 = 0u;
-            ^
-program_source:64:13: error: program scope variable must reside in constant address space
-thread uint v60 = 0u;
-            ^
-program_source:65:13: error: program scope variable must reside in constant address space
-thread uint v61 = 0u;
-            ^
-program_source:66:13: error: program scope variable must reside in constant address space
-thread uint v62 = 0u;
-            ^
-program_source:67:13: error: program scope variable must reside in constant address space
-thread uint v63 = 0u;
-            ^
-program_source:68:13: error: program scope variable must reside in constant address space
-thread uint v64 = 0u;
-            ^
-program_source:69:13: error: program scope variable must reside in constant address space
-thread uint v65 = 0u;
-            ^
-program_source:70:13: error: program scope variable must reside in constant address space
-thread uint v66 = 0u;
-            ^
-program_source:71:13: error: program scope variable must reside in constant address space
-thread uint v67 = 0u;
-            ^
-program_source:72:13: error: program scope variable must reside in constant address space
-thread uint v68 = 0u;
-            ^
-program_source:73:13: error: program scope variable must reside in constant address space
-thread uint v69 = 0u;
-            ^
-program_source:74:13: error: program scope variable must reside in constant address space
-thread uint v70 = 0u;
-            ^
-program_source:75:13: error: program scope variable must reside in constant address space
-thread uint v71 = 0u;
-            ^
-program_source:76:13: error: program scope variable must reside in constant address space
-thread uint v72 = 0u;
-            ^
-program_source:77:13: error: program scope variable must reside in constant address space
-thread uint v73 = 0u;
-            ^
-program_source:78:13: error: program scope variable must reside in constant address space
-thread uint v74 = 0u;
-            ^
-program_source:79:13: error: program scope variable must reside in constant address space
-thread uint v75 = 0u;
-            ^
-program_source:80:13: error: program scope variable must reside in constant address space
-thread uint v76 = 0u;
-            ^
-program_source:81:13: error: program scope variable must reside in constant address space
-thread uint v77 = 0u;
-            ^
-program_source:82:13: error: program scope variable must reside in constant address space
-thread uint v78 = 0u;
-            ^
-program_source:83:13: error: program scope variable must reside in constant address space
-thread uint v79 = 0u;
-            ^
-program_source:84:13: error: program scope variable must reside in constant address space
-thread uint v80 = 0u;
-            ^
-program_source:85:13: error: program scope variable must reside in constant address space
-thread uint v81 = 0u;
-            ^
-program_source:86:13: error: program scope variable must reside in constant address space
-thread uint v82 = 0u;
-            ^
-program_source:87:13: error: program scope variable must reside in constant address space
-thread uint v83 = 0u;
-            ^
-program_source:88:13: error: program scope variable must reside in constant address space
-thread uint v84 = 0u;
-            ^
-program_source:89:13: error: program scope variable must reside in constant address space
-thread uint v85 = 0u;
-            ^
-program_source:90:13: error: program scope variable must reside in constant address space
-thread uint v86 = 0u;
-            ^
-program_source:91:13: error: program scope variable must reside in constant address space
-thread uint v87 = 0u;
-            ^
-program_source:92:13: error: program scope variable must reside in constant address space
-thread uint v88 = 0u;
-            ^
-program_source:93:13: error: program scope variable must reside in constant address space
-thread uint v89 = 0u;
-            ^
-program_source:94:13: error: program scope variable must reside in constant address space
-thread uint v90 = 0u;
-            ^
-program_source:95:13: error: program scope variable must reside in constant address space
-thread uint v91 = 0u;
-            ^
-program_source:96:13: error: program scope variable must reside in constant address space
-thread uint v92 = 0u;
-            ^
-program_source:97:13: error: program scope variable must reside in constant address space
-thread uint v93 = 0u;
-            ^
-program_source:98:13: error: program scope variable must reside in constant address space
-thread uint v94 = 0u;
-            ^
-program_source:99:13: error: program scope variable must reside in constant address space
-thread uint v95 = 0u;
-            ^
-program_source:100:13: error: program scope variable must reside in constant address space
-thread uint v96 = 0u;
-            ^
-program_source:101:13: error: program scope variable must reside in constant address space
-thread uint v97 = 0u;
-            ^
-program_source:102:13: error: program scope variable must reside in constant address space
-thread uint v98 = 0u;
-            ^
-program_source:103:13: error: program scope variable must reside in constant address space
-thread uint v99 = 0u;
-            ^
-program_source:104:13: error: program scope variable must reside in constant address space
-thread uint v100 = 0u;
-            ^
-program_source:105:13: error: program scope variable must reside in constant address space
-thread uint v101 = 0u;
-            ^
-program_source:106:13: error: program scope variable must reside in constant address space
-thread uint v102 = 0u;
-            ^
-program_source:107:13: error: program scope variable must reside in constant address space
-thread uint v103 = 0u;
-            ^
-program_source:108:13: error: program scope variable must reside in constant address space
-thread uint v104 = 0u;
-            ^
-program_source:109:13: error: program scope variable must reside in constant address space
-thread uint v105 = 0u;
-            ^
-program_source:110:13: error: program scope variable must reside in constant address space
-thread uint v106 = 0u;
-            ^
-program_source:111:13: error: program scope variable must reside in constant address space
-thread uint v107 = 0u;
-            ^
-program_source:112:13: error: program scope variable must reside in constant address space
-thread uint v108 = 0u;
-            ^
-program_source:113:13: error: program scope variable must reside in constant address space
-thread uint v109 = 0u;
-            ^
-program_source:114:13: error: program scope variable must reside in constant address space
-thread uint v110 = 0u;
-            ^
-program_source:115:13: error: program scope variable must reside in constant address space
-thread uint v111 = 0u;
-            ^
-program_source:116:13: error: program scope variable must reside in constant address space
-thread uint v112 = 0u;
-            ^
-program_source:117:13: error: program scope variable must reside in constant address space
-thread uint v113 = 0u;
-            ^
-program_source:118:13: error: program scope variable must reside in constant address space
-thread uint v114 = 0u;
-            ^
-program_source:119:13: error: program scope variable must reside in constant address space
-thread uint v115 = 0u;
-            ^
-program_source:120:13: error: program scope variable must reside in constant address space
-thread uint v116 = 0u;
-            ^
-program_source:121:13: error: program scope variable must reside in constant address space
-thread uint v117 = 0u;
-            ^
-program_source:122:13: error: program scope variable must reside in constant address space
-thread uint v118 = 0u;
-            ^
-program_source:123:13: error: program scope variable must reside in constant address space
-thread uint v119 = 0u;
-            ^
-program_source:124:13: error: program scope variable must reside in constant address space
-thread uint v120 = 0u;
-            ^
-program_source:125:13: error: program scope variable must reside in constant address space
-thread uint v121 = 0u;
-            ^
-program_source:126:13: error: program scope variable must reside in constant address space
-thread uint v122 = 0u;
-            ^
-program_source:127:13: error: program scope variable must reside in constant address space
-thread uint v123 = 0u;
-            ^
-program_source:128:13: error: program scope variable must reside in constant address space
-thread uint v124 = 0u;
-            ^
-program_source:129:13: error: program scope variable must reside in constant address space
-thread uint v125 = 0u;
-            ^
-program_source:130:13: error: program scope variable must reside in constant address space
-thread uint v126 = 0u;
-            ^
-program_source:131:13: error: program scope variable must reside in constant address space
-thread uint v127 = 0u;
-            ^
-program_source:132:13: error: program scope variable must reside in constant address space
-thread uint v128 = 0u;
-            ^
-program_source:133:13: error: program scope variable must reside in constant address space
-thread uint v129 = 0u;
-            ^
-program_source:134:13: error: program scope variable must reside in constant address space
-thread uint v130 = 0u;
-            ^
-program_source:135:13: error: program scope variable must reside in constant address space
-thread uint v131 = 0u;
-            ^
-program_source:136:13: error: program scope variable must reside in constant address space
-thread uint v132 = 0u;
-            ^
-program_source:137:13: error: program scope variable must reside in constant address space
-thread uint v133 = 0u;
-            ^
-program_source:138:13: error: program scope variable must reside in constant address space
-thread uint v134 = 0u;
-            ^
-program_source:139:13: error: program scope variable must reside in constant address space
-thread uint v135 = 0u;
-            ^
-program_source:140:13: error: program scope variable must reside in constant address space
-thread uint v136 = 0u;
-            ^
-program_source:141:13: error: program scope variable must reside in constant address space
-thread uint v137 = 0u;
-            ^
-program_source:142:13: error: program scope variable must reside in constant address space
-thread uint v138 = 0u;
-            ^
-program_source:143:13: error: program scope variable must reside in constant address space
-thread uint v139 = 0u;
-            ^
-program_source:144:13: error: program scope variable must reside in constant address space
-thread uint v140 = 0u;
-            ^
-program_source:145:13: error: program scope variable must reside in constant address space
-thread uint v141 = 0u;
-            ^
-program_source:146:13: error: program scope variable must reside in constant address space
-thread uint v142 = 0u;
-            ^
-program_source:147:13: error: program scope variable must reside in constant address space
-thread uint v143 = 0u;
-            ^
-program_source:148:13: error: program scope variable must reside in constant address space
-thread uint v144 = 0u;
-            ^
-program_source:149:13: error: program scope variable must reside in constant address space
-thread uint v145 = 0u;
-            ^
-program_source:150:13: error: program scope variable must reside in constant address space
-thread uint v146 = 0u;
-            ^
-program_source:151:13: error: program scope variable must reside in constant address space
-thread uint v147 = 0u;
-            ^
-program_source:152:13: error: program scope variable must reside in constant address space
-thread uint v148 = 0u;
-            ^
-program_source:153:13: error: program scope variable must reside in constant address space
-thread uint v149 = 0u;
-            ^
-program_source:154:13: error: program scope variable must reside in constant address space
-thread uint v150 = 0u;
-            ^
-program_source:155:13: error: program scope variable must reside in constant address space
-thread uint v151 = 0u;
-            ^
-program_source:156:13: error: program scope variable must reside in constant address space
-thread uint v152 = 0u;
-            ^
-program_source:157:13: error: program scope variable must reside in constant address space
-thread uint v153 = 0u;
-            ^
-program_source:158:13: error: program scope variable must reside in constant address space
-thread uint v154 = 0u;
-            ^
-program_source:159:13: error: program scope variable must reside in constant address space
-thread uint v155 = 0u;
-            ^
-program_source:160:13: error: program scope variable must reside in constant address space
-thread uint v156 = 0u;
-            ^
-program_source:161:13: error: program scope variable must reside in constant address space
-thread uint v157 = 0u;
-            ^
-program_source:162:13: error: program scope variable must reside in constant address space
-thread uint v158 = 0u;
-            ^
-program_source:163:13: error: program scope variable must reside in constant address space
-thread uint v159 = 0u;
-            ^
-program_source:164:13: error: program scope variable must reside in constant address space
-thread uint v160 = 0u;
-            ^
-program_source:165:13: error: program scope variable must reside in constant address space
-thread uint v161 = 0u;
-            ^
-program_source:166:13: error: program scope variable must reside in constant address space
-thread uint v162 = 0u;
-            ^
-program_source:167:13: error: program scope variable must reside in constant address space
-thread uint v163 = 0u;
-            ^
-program_source:168:13: error: program scope variable must reside in constant address space
-thread uint v164 = 0u;
-            ^
-program_source:169:13: error: program scope variable must reside in constant address space
-thread uint v165 = 0u;
-            ^
-program_source:170:13: error: program scope variable must reside in constant address space
-thread uint v166 = 0u;
-            ^
-program_source:171:13: error: program scope variable must reside in constant address space
-thread uint v167 = 0u;
-            ^
-program_source:172:13: error: program scope variable must reside in constant address space
-thread uint v168 = 0u;
-            ^
-program_source:173:13: error: program scope variable must reside in constant address space
-thread uint v169 = 0u;
-            ^
-program_source:174:13: error: program scope variable must reside in constant address space
-thread uint v170 = 0u;
-            ^
-program_source:175:13: error: program scope variable must reside in constant address space
-thread uint v171 = 0u;
-            ^
-program_source:176:13: error: program scope variable must reside in constant address space
-thread uint v172 = 0u;
-            ^
-program_source:177:13: error: program scope variable must reside in constant address space
-thread uint v173 = 0u;
-            ^
-program_source:178:13: error: program scope variable must reside in constant address space
-thread uint v174 = 0u;
-            ^
-program_source:179:13: error: program scope variable must reside in constant address space
-thread uint v175 = 0u;
-            ^
-program_source:180:13: error: program scope variable must reside in constant address space
-thread uint v176 = 0u;
-            ^
-program_source:181:13: error: program scope variable must reside in constant address space
-thread uint v177 = 0u;
-            ^
-program_source:182:13: error: program scope variable must reside in constant address space
-thread uint v178 = 0u;
-            ^
-program_source:183:13: error: program scope variable must reside in constant address space
-thread uint v179 = 0u;
-            ^
-program_source:184:13: error: program scope variable must reside in constant address space
-thread uint v180 = 0u;
-            ^
-program_source:185:13: error: program scope variable must reside in constant address space
-thread uint v181 = 0u;
-            ^
-program_source:186:13: error: program scope variable must reside in constant address space
-thread uint v182 = 0u;
-            ^
-program_source:187:13: error: program scope variable must reside in constant address space
-thread uint v183 = 0u;
-            ^
-program_source:188:13: error: program scope variable must reside in constant address space
-thread uint v184 = 0u;
-            ^
-program_source:189:13: error: program scope variable must reside in constant address space
-thread uint v185 = 0u;
-            ^
-program_source:190:13: error: program scope variable must reside in constant address space
-thread uint v186 = 0u;
-            ^
-program_source:191:13: error: program scope variable must reside in constant address space
-thread uint v187 = 0u;
-            ^
-program_source:192:13: error: program scope variable must reside in constant address space
-thread uint v188 = 0u;
-            ^
-program_source:193:13: error: program scope variable must reside in constant address space
-thread uint v189 = 0u;
-            ^
-program_source:194:13: error: program scope variable must reside in constant address space
-thread uint v190 = 0u;
-            ^
-program_source:195:13: error: program scope variable must reside in constant address space
-thread uint v191 = 0u;
-            ^
-program_source:196:13: error: program scope variable must reside in constant address space
-thread uint v192 = 0u;
-            ^
-program_source:197:13: error: program scope variable must reside in constant address space
-thread uint v193 = 0u;
-            ^
-program_source:198:13: error: program scope variable must reside in constant address space
-thread uint v194 = 0u;
-            ^
-program_source:199:13: error: program scope variable must reside in constant address space
-thread uint v195 = 0u;
-            ^
-program_source:200:13: error: program scope variable must reside in constant address space
-thread uint v196 = 0u;
-            ^
-program_source:201:13: error: program scope variable must reside in constant address space
-thread uint v197 = 0u;
-            ^
-program_source:202:13: error: program scope variable must reside in constant address space
-thread uint v198 = 0u;
-            ^
-program_source:203:13: error: program scope variable must reside in constant address space
-thread uint v199 = 0u;
-            ^
-program_source:204:13: error: program scope variable must reside in constant address space
-thread uint v200 = 0u;
-            ^
-program_source:205:13: error: program scope variable must reside in constant address space
-thread uint v201 = 0u;
-            ^
-program_source:206:13: error: program scope variable must reside in constant address space
-thread uint v202 = 0u;
-            ^
-program_source:207:13: error: program scope variable must reside in constant address space
-thread uint v203 = 0u;
-            ^
-program_source:208:13: error: program scope variable must reside in constant address space
-thread uint v204 = 0u;
-            ^
-program_source:209:13: error: program scope variable must reside in constant address space
-thread uint v205 = 0u;
-            ^
-program_source:210:13: error: program scope variable must reside in constant address space
-thread uint v206 = 0u;
-            ^
-program_source:211:13: error: program scope variable must reside in constant address space
-thread uint v207 = 0u;
-            ^
-program_source:212:13: error: program scope variable must reside in constant address space
-thread uint v208 = 0u;
-            ^
-program_source:213:13: error: program scope variable must reside in constant address space
-thread uint v209 = 0u;
-            ^
-program_source:214:13: error: program scope variable must reside in constant address space
-thread uint v210 = 0u;
-            ^
-program_source:215:13: error: program scope variable must reside in constant address space
-thread uint v211 = 0u;
-            ^
-program_source:216:13: error: program scope variable must reside in constant address space
-thread uint v212 = 0u;
-            ^
-program_source:217:13: error: program scope variable must reside in constant address space
-thread uint v213 = 0u;
-            ^
-program_source:218:13: error: program scope variable must reside in constant address space
-thread uint v214 = 0u;
-            ^
-program_source:219:13: error: program scope variable must reside in constant address space
-thread uint v215 = 0u;
-            ^
-program_source:220:13: error: program scope variable must reside in constant address space
-thread uint v216 = 0u;
-            ^
-program_source:221:13: error: program scope variable must reside in constant address space
-thread uint v217 = 0u;
-            ^
-program_source:222:13: error: program scope variable must reside in constant address space
-thread uint v218 = 0u;
-            ^
-program_source:223:13: error: program scope variable must reside in constant address space
-thread uint v219 = 0u;
-            ^
-program_source:224:13: error: program scope variable must reside in constant address space
-thread uint v220 = 0u;
-            ^
-program_source:225:13: error: program scope variable must reside in constant address space
-thread uint v221 = 0u;
-            ^
-program_source:226:13: error: program scope variable must reside in constant address space
-thread uint v222 = 0u;
-            ^
-program_source:227:13: error: program scope variable must reside in constant address space
-thread uint v223 = 0u;
-            ^
-program_source:228:13: error: program scope variable must reside in constant address space
-thread uint v224 = 0u;
-            ^
-program_source:229:13: error: program scope variable must reside in constant address space
-thread uint v225 = 0u;
-            ^
-program_source:230:13: error: program scope variable must reside in constant address space
-thread uint v226 = 0u;
-            ^
-program_source:231:13: error: program scope variable must reside in constant address space
-thread uint v227 = 0u;
-            ^
-program_source:232:13: error: program scope variable must reside in constant address space
-thread uint v228 = 0u;
-            ^
-program_source:233:13: error: program scope variable must reside in constant address space
-thread uint v229 = 0u;
-            ^
-program_source:234:13: error: program scope variable must reside in constant address space
-thread uint v230 = 0u;
-            ^
-program_source:235:13: error: program scope variable must reside in constant address space
-thread uint v231 = 0u;
-            ^
-program_source:236:13: error: program scope variable must reside in constant address space
-thread uint v232 = 0u;
-            ^
-program_source:237:13: error: program scope variable must reside in constant address space
-thread uint v233 = 0u;
-            ^
-program_source:238:13: error: program scope variable must reside in constant address space
-thread uint v234 = 0u;
-            ^
-program_source:239:13: error: program scope variable must reside in constant address space
-thread uint v235 = 0u;
-            ^
-program_source:240:13: error: program scope variable must reside in constant address space
-thread uint v236 = 0u;
-            ^
-program_source:241:13: error: program scope variable must reside in constant address space
-thread uint v237 = 0u;
-            ^
-program_source:242:13: error: program scope variable must reside in constant address space
-thread uint v238 = 0u;
-            ^
-program_source:243:13: error: program scope variable must reside in constant address space
-thread uint v239 = 0u;
-            ^
-program_source:244:13: error: program scope variable must reside in constant address space
-thread uint v240 = 0u;
-            ^
-program_source:245:13: error: program scope variable must reside in constant address space
-thread uint v241 = 0u;
-            ^
-program_source:246:13: error: program scope variable must reside in constant address space
-thread uint v242 = 0u;
-            ^
-program_source:247:13: error: program scope variable must reside in constant address space
-thread uint v243 = 0u;
-            ^
-program_source:248:13: error: program scope variable must reside in constant address space
-thread uint v244 = 0u;
-            ^
-program_source:249:13: error: program scope variable must reside in constant address space
-thread uint v245 = 0u;
-            ^
-program_source:250:13: error: program scope variable must reside in constant address space
-thread uint v246 = 0u;
-            ^
-program_source:251:13: error: program scope variable must reside in constant address space
-thread uint v247 = 0u;
-            ^
-program_source:252:13: error: program scope variable must reside in constant address space
-thread uint v248 = 0u;
-            ^
-program_source:253:13: error: program scope variable must reside in constant address space
-thread uint v249 = 0u;
-            ^
-program_source:254:13: error: program scope variable must reside in constant address space
-thread uint v250 = 0u;
-            ^
-program_source:255:13: error: program scope variable must reside in constant address space
-thread uint v251 = 0u;
-            ^
-program_source:256:13: error: program scope variable must reside in constant address space
-thread uint v252 = 0u;
-            ^
-program_source:257:13: error: program scope variable must reside in constant address space
-thread uint v253 = 0u;
-            ^
-program_source:258:13: error: program scope variable must reside in constant address space
-thread uint v254 = 0u;
-            ^
-program_source:259:13: error: program scope variable must reside in constant address space
-thread uint v255 = 0u;
-            ^
-program_source:260:13: error: program scope variable must reside in constant address space
-thread uint v256 = 0u;
-            ^
-program_source:261:13: error: program scope variable must reside in constant address space
-thread uint v257 = 0u;
-            ^
-program_source:262:13: error: program scope variable must reside in constant address space
-thread uint v258 = 0u;
-            ^
-program_source:263:13: error: program scope variable must reside in constant address space
-thread uint v259 = 0u;
-            ^
-program_source:264:13: error: program scope variable must reside in constant address space
-thread uint v260 = 0u;
-            ^
-program_source:265:13: error: program scope variable must reside in constant address space
-thread uint v261 = 0u;
-            ^
-program_source:266:13: error: program scope variable must reside in constant address space
-thread uint v262 = 0u;
-            ^
-program_source:267:13: error: program scope variable must reside in constant address space
-thread uint v263 = 0u;
-            ^
-program_source:268:13: error: program scope variable must reside in constant address space
-thread uint v264 = 0u;
-            ^
-program_source:269:13: error: program scope variable must reside in constant address space
-thread uint v265 = 0u;
-            ^
-program_source:270:13: error: program scope variable must reside in constant address space
-thread uint v266 = 0u;
-            ^
-program_source:271:13: error: program scope variable must reside in constant address space
-thread uint v267 = 0u;
-            ^
-program_source:272:13: error: program scope variable must reside in constant address space
-thread uint v268 = 0u;
-            ^
-program_source:273:13: error: program scope variable must reside in constant address space
-thread uint v269 = 0u;
-            ^
-program_source:274:13: error: program scope variable must reside in constant address space
-thread uint v270 = 0u;
-            ^
-program_source:275:13: error: program scope variable must reside in constant address space
-thread uint v271 = 0u;
-            ^
-program_source:276:13: error: program scope variable must reside in constant address space
-thread uint v272 = 0u;
-            ^
-program_source:277:13: error: program scope variable must reside in constant address space
-thread uint v273 = 0u;
-            ^
-program_source:278:13: error: program scope variable must reside in constant address space
-thread uint v274 = 0u;
-            ^
-program_source:279:13: error: program scope variable must reside in constant address space
-thread uint v275 = 0u;
-            ^
-program_source:280:13: error: program scope variable must reside in constant address space
-thread uint v276 = 0u;
-            ^
-program_source:281:13: error: program scope variable must reside in constant address space
-thread uint v277 = 0u;
-            ^
-program_source:282:13: error: program scope variable must reside in constant address space
-thread uint v278 = 0u;
-            ^
-program_source:283:13: error: program scope variable must reside in constant address space
-thread uint v279 = 0u;
-            ^
-program_source:284:13: error: program scope variable must reside in constant address space
-thread uint v280 = 0u;
-            ^
-program_source:285:13: error: program scope variable must reside in constant address space
-thread uint v281 = 0u;
-            ^
-program_source:286:13: error: program scope variable must reside in constant address space
-thread uint v282 = 0u;
-            ^
-program_source:287:13: error: program scope variable must reside in constant address space
-thread uint v283 = 0u;
-            ^
-program_source:288:13: error: program scope variable must reside in constant address space
-thread uint v284 = 0u;
-            ^
-program_source:289:13: error: program scope variable must reside in constant address space
-thread uint v285 = 0u;
-            ^
-program_source:290:13: error: program scope variable must reside in constant address space
-thread uint v286 = 0u;
-            ^
-program_source:291:13: error: program scope variable must reside in constant address space
-thread uint v287 = 0u;
-            ^
-program_source:292:13: error: program scope variable must reside in constant address space
-thread uint v288 = 0u;
-            ^
-program_source:293:13: error: program scope variable must reside in constant address space
-thread uint v289 = 0u;
-            ^
-program_source:294:13: error: program scope variable must reside in constant address space
-thread uint v290 = 0u;
-            ^
-program_source:295:13: error: program scope variable must reside in constant address space
-thread uint v291 = 0u;
-            ^
-program_source:296:13: error: program scope variable must reside in constant address space
-thread uint v292 = 0u;
-            ^
-program_source:297:13: error: program scope variable must reside in constant address space
-thread uint v293 = 0u;
-            ^
-program_source:298:13: error: program scope variable must reside in constant address space
-thread uint v294 = 0u;
-            ^
-program_source:299:13: error: program scope variable must reside in constant address space
-thread uint v295 = 0u;
-            ^
-program_source:300:13: error: program scope variable must reside in constant address space
-thread uint v296 = 0u;
-            ^
-program_source:301:13: error: program scope variable must reside in constant address space
-thread uint v297 = 0u;
-            ^
-program_source:302:13: error: program scope variable must reside in constant address space
-thread uint v298 = 0u;
-            ^
-program_source:303:13: error: program scope variable must reside in constant address space
-thread uint v299 = 0u;
-            ^
-program_source:304:13: error: program scope variable must reside in constant address space
-thread uint v300 = 0u;
-            ^
-program_source:305:13: error: program scope variable must reside in constant address space
-thread uint v301 = 0u;
-            ^
-program_source:306:13: error: program scope variable must reside in constant address space
-thread uint v302 = 0u;
-            ^
-program_source:307:13: error: program scope variable must reside in constant address space
-thread uint v303 = 0u;
-            ^
-program_source:308:13: error: program scope variable must reside in constant address space
-thread uint v304 = 0u;
-            ^
-program_source:309:13: error: program scope variable must reside in constant address space
-thread uint v305 = 0u;
-            ^
-program_source:310:13: error: program scope variable must reside in constant address space
-thread uint v306 = 0u;
-            ^
-program_source:311:13: error: program scope variable must reside in constant address space
-thread uint v307 = 0u;
-            ^
-program_source:312:13: error: program scope variable must reside in constant address space
-thread uint v308 = 0u;
-            ^
-program_source:313:13: error: program scope variable must reside in constant address space
-thread uint v309 = 0u;
-            ^
-program_source:314:13: error: program scope variable must reside in constant address space
-thread uint v310 = 0u;
-            ^
-program_source:315:13: error: program scope variable must reside in constant address space
-thread uint v311 = 0u;
-            ^
-program_source:316:13: error: program scope variable must reside in constant address space
-thread uint v312 = 0u;
-            ^
-program_source:317:13: error: program scope variable must reside in constant address space
-thread uint v313 = 0u;
-            ^
-program_source:318:13: error: program scope variable must reside in constant address space
-thread uint v314 = 0u;
-            ^
-program_source:319:13: error: program scope variable must reside in constant address space
-thread uint v315 = 0u;
-            ^
-program_source:320:13: error: program scope variable must reside in constant address space
-thread uint v316 = 0u;
-            ^
-program_source:321:13: error: program scope variable must reside in constant address space
-thread uint v317 = 0u;
-            ^
-program_source:322:13: error: program scope variable must reside in constant address space
-thread uint v318 = 0u;
-            ^
-program_source:323:13: error: program scope variable must reside in constant address space
-thread uint v319 = 0u;
-            ^
-program_source:324:13: error: program scope variable must reside in constant address space
-thread uint v320 = 0u;
-            ^
-program_source:325:13: error: program scope variable must reside in constant address space
-thread uint v321 = 0u;
-            ^
-program_source:326:13: error: program scope variable must reside in constant address space
-thread uint v322 = 0u;
-            ^
-program_source:327:13: error: program scope variable must reside in constant address space
-thread uint v323 = 0u;
-            ^
-program_source:328:13: error: program scope variable must reside in constant address space
-thread uint v324 = 0u;
-            ^
-program_source:329:13: error: program scope variable must reside in constant address space
-thread uint v325 = 0u;
-            ^
-program_source:330:13: error: program scope variable must reside in constant address space
-thread uint v326 = 0u;
-            ^
-program_source:331:13: error: program scope variable must reside in constant address space
-thread uint v327 = 0u;
-            ^
-program_source:332:13: error: program scope variable must reside in constant address space
-thread uint v328 = 0u;
-            ^
-program_source:333:13: error: program scope variable must reside in constant address space
-thread uint v329 = 0u;
-            ^
-program_source:334:13: error: program scope variable must reside in constant address space
-thread uint v330 = 0u;
-            ^
-program_source:335:13: error: program scope variable must reside in constant address space
-thread uint v331 = 0u;
-            ^
-program_source:336:13: error: program scope variable must reside in constant address space
-thread uint v332 = 0u;
-            ^
-program_source:337:13: error: program scope variable must reside in constant address space
-thread uint v333 = 0u;
-            ^
-program_source:338:13: error: program scope variable must reside in constant address space
-thread uint v334 = 0u;
-            ^
-program_source:339:13: error: program scope variable must reside in constant address space
-thread uint v335 = 0u;
-            ^
-program_source:340:13: error: program scope variable must reside in constant address space
-thread uint v336 = 0u;
-            ^
-program_source:341:13: error: program scope variable must reside in constant address space
-thread uint v337 = 0u;
-            ^
-program_source:342:13: error: program scope variable must reside in constant address space
-thread uint v338 = 0u;
-            ^
-program_source:343:13: error: program scope variable must reside in constant address space
-thread uint v339 = 0u;
-            ^
-program_source:344:13: error: program scope variable must reside in constant address space
-thread uint v340 = 0u;
-            ^
-program_source:345:13: error: program scope variable must reside in constant address space
-thread uint v341 = 0u;
-            ^
-program_source:346:13: error: program scope variable must reside in constant address space
-thread uint v342 = 0u;
-            ^
-program_source:347:13: error: program scope variable must reside in constant address space
-thread uint v343 = 0u;
-            ^
-program_source:348:13: error: program scope variable must reside in constant address space
-thread uint v344 = 0u;
-            ^
-program_source:349:13: error: program scope variable must reside in constant address space
-thread uint v345 = 0u;
-            ^
-program_source:350:13: error: program scope variable must reside in constant address space
-thread uint v346 = 0u;
-            ^
-program_source:351:13: error: program scope variable must reside in constant address space
-thread uint v347 = 0u;
-            ^
-program_source:352:13: error: program scope variable must reside in constant address space
-thread uint v348 = 0u;
-            ^
-program_source:353:13: error: program scope variable must reside in constant address space
-thread uint v349 = 0u;
-            ^
-program_source:354:13: error: program scope variable must reside in constant address space
-thread uint v350 = 0u;
-            ^
-program_source:355:13: error: program scope variable must reside in constant address space
-thread uint v351 = 0u;
-            ^
-program_source:356:13: error: program scope variable must reside in constant address space
-thread uint v352 = 0u;
-            ^
-program_source:357:13: error: program scope variable must reside in constant address space
-thread uint v353 = 0u;
-            ^
-program_source:358:13: error: program scope variable must reside in constant address space
-thread uint v354 = 0u;
-            ^
-program_source:359:13: error: program scope variable must reside in constant address space
-thread uint v355 = 0u;
-            ^
-program_source:360:13: error: program scope variable must reside in constant address space
-thread uint v356 = 0u;
-            ^
-program_source:361:13: error: program scope variable must reside in constant address space
-thread uint v357 = 0u;
-            ^
-program_source:362:13: error: program scope variable must reside in constant address space
-thread uint v358 = 0u;
-            ^
-program_source:363:13: error: program scope variable must reside in constant address space
-thread uint v359 = 0u;
-            ^
-program_source:364:13: error: program scope variable must reside in constant address space
-thread uint v360 = 0u;
-            ^
-program_source:365:13: error: program scope variable must reside in constant address space
-thread uint v361 = 0u;
-            ^
-program_source:366:13: error: program scope variable must reside in constant address space
-thread uint v362 = 0u;
-            ^
-program_source:367:13: error: program scope variable must reside in constant address space
-thread uint v363 = 0u;
-            ^
-program_source:368:13: error: program scope variable must reside in constant address space
-thread uint v364 = 0u;
-            ^
-program_source:369:13: error: program scope variable must reside in constant address space
-thread uint v365 = 0u;
-            ^
-program_source:370:13: error: program scope variable must reside in constant address space
-thread uint v366 = 0u;
-            ^
-program_source:371:13: error: program scope variable must reside in constant address space
-thread uint v367 = 0u;
-            ^
-program_source:372:13: error: program scope variable must reside in constant address space
-thread uint v368 = 0u;
-            ^
-program_source:373:13: error: program scope variable must reside in constant address space
-thread uint v369 = 0u;
-            ^
-program_source:374:13: error: program scope variable must reside in constant address space
-thread uint v370 = 0u;
-            ^
-program_source:375:13: error: program scope variable must reside in constant address space
-thread uint v371 = 0u;
-            ^
-program_source:376:13: error: program scope variable must reside in constant address space
-thread uint v372 = 0u;
-            ^
-program_source:377:13: error: program scope variable must reside in constant address space
-thread uint v373 = 0u;
-            ^
-program_source:378:13: error: program scope variable must reside in constant address space
-thread uint v374 = 0u;
-            ^
-program_source:379:13: error: program scope variable must reside in constant address space
-thread uint v375 = 0u;
-            ^
-program_source:380:13: error: program scope variable must reside in constant address space
-thread uint v376 = 0u;
-            ^
-program_source:381:13: error: program scope variable must reside in constant address space
-thread uint v377 = 0u;
-            ^
-program_source:382:13: error: program scope variable must reside in constant address space
-thread uint v378 = 0u;
-            ^
-program_source:383:13: error: program scope variable must reside in constant address space
-thread uint v379 = 0u;
-            ^
-program_source:384:13: error: program scope variable must reside in constant address space
-thread uint v380 = 0u;
-            ^
-program_source:385:13: error: program scope variable must reside in constant address space
-thread uint v381 = 0u;
-            ^
-program_source:386:13: error: program scope variable must reside in constant address space
-thread uint v382 = 0u;
-            ^
-program_source:387:13: error: program scope variable must reside in constant address space
-thread uint v383 = 0u;
-            ^
-program_source:388:13: error: program scope variable must reside in constant address space
-thread uint v384 = 0u;
-            ^
-program_source:389:13: error: program scope variable must reside in constant address space
-thread uint v385 = 0u;
-            ^
-program_source:390:13: error: program scope variable must reside in constant address space
-thread uint v386 = 0u;
-            ^
-program_source:391:13: error: program scope variable must reside in constant address space
-thread uint v387 = 0u;
-            ^
-program_source:392:13: error: program scope variable must reside in constant address space
-thread uint v388 = 0u;
-            ^
-program_source:393:13: error: program scope variable must reside in constant address space
-thread uint v389 = 0u;
-            ^
-program_source:394:13: error: program scope variable must reside in constant address space
-thread uint v390 = 0u;
-            ^
-program_source:395:13: error: program scope variable must reside in constant address space
-thread uint v391 = 0u;
-            ^
-program_source:396:13: error: program scope variable must reside in constant address space
-thread uint v392 = 0u;
-            ^
-program_source:397:13: error: program scope variable must reside in constant address space
-thread uint v393 = 0u;
-            ^
-program_source:398:13: error: program scope variable must reside in constant address space
-thread uint v394 = 0u;
-            ^
-program_source:399:13: error: program scope variable must reside in constant address space
-thread uint v395 = 0u;
-            ^
-program_source:400:13: error: program scope variable must reside in constant address space
-thread uint v396 = 0u;
-            ^
-program_source:401:13: error: program scope variable must reside in constant address space
-thread uint v397 = 0u;
-            ^
-program_source:402:13: error: program scope variable must reside in constant address space
-thread uint v398 = 0u;
-            ^
-program_source:403:13: error: program scope variable must reside in constant address space
-thread uint v399 = 0u;
-            ^
-program_source:404:13: error: program scope variable must reside in constant address space
-thread uint v400 = 0u;
-            ^
-program_source:405:13: error: program scope variable must reside in constant address space
-thread uint v401 = 0u;
-            ^
-program_source:406:13: error: program scope variable must reside in constant address space
-thread uint v402 = 0u;
-            ^
-program_source:407:13: error: program scope variable must reside in constant address space
-thread uint v403 = 0u;
-            ^
-program_source:408:13: error: program scope variable must reside in constant address space
-thread uint v404 = 0u;
-            ^
-program_source:409:13: error: program scope variable must reside in constant address space
-thread uint v405 = 0u;
-            ^
-program_source:410:13: error: program scope variable must reside in constant address space
-thread uint v406 = 0u;
-            ^
-program_source:411:13: error: program scope variable must reside in constant address space
-thread uint v407 = 0u;
-            ^
-program_source:412:13: error: program scope variable must reside in constant address space
-thread uint v408 = 0u;
-            ^
-program_source:413:13: error: program scope variable must reside in constant address space
-thread uint v409 = 0u;
-            ^
-program_source:414:13: error: program scope variable must reside in constant address space
-thread uint v410 = 0u;
-            ^
-program_source:415:13: error: program scope variable must reside in constant address space
-thread uint v411 = 0u;
-            ^
-program_source:416:13: error: program scope variable must reside in constant address space
-thread uint v412 = 0u;
-            ^
-program_source:417:13: error: program scope variable must reside in constant address space
-thread uint v413 = 0u;
-            ^
-program_source:418:13: error: program scope variable must reside in constant address space
-thread uint v414 = 0u;
-            ^
-program_source:419:13: error: program scope variable must reside in constant address space
-thread uint v415 = 0u;
-            ^
-program_source:420:13: error: program scope variable must reside in constant address space
-thread uint v416 = 0u;
-            ^
-program_source:421:13: error: program scope variable must reside in constant address space
-thread uint v417 = 0u;
-            ^
-program_source:422:13: error: program scope variable must reside in constant address space
-thread uint v418 = 0u;
-            ^
-program_source:423:13: error: program scope variable must reside in constant address space
-thread uint v419 = 0u;
-            ^
-program_source:424:13: error: program scope variable must reside in constant address space
-thread uint v420 = 0u;
-            ^
-program_source:425:13: error: program scope variable must reside in constant address space
-thread uint v421 = 0u;
-            ^
-program_source:426:13: error: program scope variable must reside in constant address space
-thread uint v422 = 0u;
-            ^
-program_source:427:13: error: program scope variable must reside in constant address space
-thread uint v423 = 0u;
-            ^
-program_source:428:13: error: program scope variable must reside in constant address space
-thread uint v424 = 0u;
-            ^
-program_source:429:13: error: program scope variable must reside in constant address space
-thread uint v425 = 0u;
-            ^
-program_source:430:13: error: program scope variable must reside in constant address space
-thread uint v426 = 0u;
-            ^
-program_source:431:13: error: program scope variable must reside in constant address space
-thread uint v427 = 0u;
-            ^
-program_source:432:13: error: program scope variable must reside in constant address space
-thread uint v428 = 0u;
-            ^
-program_source:433:13: error: program scope variable must reside in constant address space
-thread uint v429 = 0u;
-            ^
-program_source:434:13: error: program scope variable must reside in constant address space
-thread uint v430 = 0u;
-            ^
-program_source:435:13: error: program scope variable must reside in constant address space
-thread uint v431 = 0u;
-            ^
-program_source:436:13: error: program scope variable must reside in constant address space
-thread uint v432 = 0u;
-            ^
-program_source:437:13: error: program scope variable must reside in constant address space
-thread uint v433 = 0u;
-            ^
-program_source:438:13: error: program scope variable must reside in constant address space
-thread uint v434 = 0u;
-            ^
-program_source:439:13: error: program scope variable must reside in constant address space
-thread uint v435 = 0u;
-            ^
-program_source:440:13: error: program scope variable must reside in constant address space
-thread uint v436 = 0u;
-            ^
-program_source:441:13: error: program scope variable must reside in constant address space
-thread uint v437 = 0u;
-            ^
-program_source:442:13: error: program scope variable must reside in constant address space
-thread uint v438 = 0u;
-            ^
-program_source:443:13: error: program scope variable must reside in constant address space
-thread uint v439 = 0u;
-            ^
-program_source:444:13: error: program scope variable must reside in constant address space
-thread uint v440 = 0u;
-            ^
-program_source:445:13: error: program scope variable must reside in constant address space
-thread uint v441 = 0u;
-            ^
-program_source:446:13: error: program scope variable must reside in constant address space
-thread uint v442 = 0u;
-            ^
-program_source:447:13: error: program scope variable must reside in constant address space
-thread uint v443 = 0u;
-            ^
-program_source:448:13: error: program scope variable must reside in constant address space
-thread uint v444 = 0u;
-            ^
-program_source:449:13: error: program scope variable must reside in constant address space
-thread uint v445 = 0u;
-            ^
-program_source:450:13: error: program scope variable must reside in constant address space
-thread uint v446 = 0u;
-            ^
-program_source:451:13: error: program scope variable must reside in constant address space
-thread uint v447 = 0u;
-            ^
-program_source:452:13: error: program scope variable must reside in constant address space
-thread uint v448 = 0u;
-            ^
-program_source:453:13: error: program scope variable must reside in constant address space
-thread uint v449 = 0u;
-            ^
-program_source:454:13: error: program scope variable must reside in constant address space
-thread uint v450 = 0u;
-            ^
-program_source:455:13: error: program scope variable must reside in constant address space
-thread uint v451 = 0u;
-            ^
-program_source:456:13: error: program scope variable must reside in constant address space
-thread uint v452 = 0u;
-            ^
-program_source:457:13: error: program scope variable must reside in constant address space
-thread uint v453 = 0u;
-            ^
-program_source:458:13: error: program scope variable must reside in constant address space
-thread uint v454 = 0u;
-            ^
-program_source:459:13: error: program scope variable must reside in constant address space
-thread uint v455 = 0u;
-            ^
-program_source:460:13: error: program scope variable must reside in constant address space
-thread uint v456 = 0u;
-            ^
-program_source:461:13: error: program scope variable must reside in constant address space
-thread uint v457 = 0u;
-            ^
-program_source:462:13: error: program scope variable must reside in constant address space
-thread uint v458 = 0u;
-            ^
-program_source:463:13: error: program scope variable must reside in constant address space
-thread uint v459 = 0u;
-            ^
-program_source:464:13: error: program scope variable must reside in constant address space
-thread uint v460 = 0u;
-            ^
-program_source:465:13: error: program scope variable must reside in constant address space
-thread uint v461 = 0u;
-            ^
-program_source:466:13: error: program scope variable must reside in constant address space
-thread uint v462 = 0u;
-            ^
-program_source:467:13: error: program scope variable must reside in constant address space
-thread uint v463 = 0u;
-            ^
-program_source:468:13: error: program scope variable must reside in constant address space
-thread uint v464 = 0u;
-            ^
-program_source:469:13: error: program scope variable must reside in constant address space
-thread uint v465 = 0u;
-            ^
-program_source:470:13: error: program scope variable must reside in constant address space
-thread uint v466 = 0u;
-            ^
-program_source:471:13: error: program scope variable must reside in constant address space
-thread uint v467 = 0u;
-            ^
-program_source:472:13: error: program scope variable must reside in constant address space
-thread uint v468 = 0u;
-            ^
-program_source:473:13: error: program scope variable must reside in constant address space
-thread uint v469 = 0u;
-            ^
-program_source:474:13: error: program scope variable must reside in constant address space
-thread uint v470 = 0u;
-            ^
-program_source:475:13: error: program scope variable must reside in constant address space
-thread uint v471 = 0u;
-            ^
-program_source:476:13: error: program scope variable must reside in constant address space
-thread uint v472 = 0u;
-            ^
-program_source:477:13: error: program scope variable must reside in constant address space
-thread uint v473 = 0u;
-            ^
-program_source:478:13: error: program scope variable must reside in constant address space
-thread uint v474 = 0u;
-            ^
-program_source:479:13: error: program scope variable must reside in constant address space
-thread uint v475 = 0u;
-            ^
-program_source:480:13: error: program scope variable must reside in constant address space
-thread uint v476 = 0u;
-            ^
-program_source:481:13: error: program scope variable must reside in constant address space
-thread uint v477 = 0u;
-            ^
-program_source:482:13: error: program scope variable must reside in constant address space
-thread uint v478 = 0u;
-            ^
-program_source:483:13: error: program scope variable must reside in constant address space
-thread uint v479 = 0u;
-            ^
-program_source:484:13: error: program scope variable must reside in constant address space
-thread uint v480 = 0u;
-            ^
-program_source:485:13: error: program scope variable must reside in constant address space
-thread uint v481 = 0u;
-            ^
-program_source:486:13: error: program scope variable must reside in constant address space
-thread uint v482 = 0u;
-            ^
-program_source:487:13: error: program scope variable must reside in constant address space
-thread uint v483 = 0u;
-            ^
-program_source:488:13: error: program scope variable must reside in constant address space
-thread uint v484 = 0u;
-            ^
-program_source:489:13: error: program scope variable must reside in constant address space
-thread uint v485 = 0u;
-            ^
-program_source:490:13: error: program scope variable must reside in constant address space
-thread uint v486 = 0u;
-            ^
-program_source:491:13: error: program scope variable must reside in constant address space
-thread uint v487 = 0u;
-            ^
-program_source:492:13: error: program scope variable must reside in constant address space
-thread uint v488 = 0u;
-            ^
-program_source:493:13: error: program scope variable must reside in constant address space
-thread uint v489 = 0u;
-            ^
-program_source:494:13: error: program scope variable must reside in constant address space
-thread uint v490 = 0u;
-            ^
-program_source:495:13: error: program scope variable must reside in constant address space
-thread uint v491 = 0u;
-            ^
-program_source:496:13: error: program scope variable must reside in constant address space
-thread uint v492 = 0u;
-            ^
-program_source:497:13: error: program scope variable must reside in constant address space
-thread uint v493 = 0u;
-            ^
-program_source:498:13: error: program scope variable must reside in constant address space
-thread uint v494 = 0u;
-            ^
-program_source:499:13: error: program scope variable must reside in constant address space
-thread uint v495 = 0u;
-            ^
-program_source:500:13: error: program scope variable must reside in constant address space
-thread uint v496 = 0u;
-            ^
-program_source:501:13: error: program scope variable must reside in constant address space
-thread uint v497 = 0u;
-            ^
-program_source:502:13: error: program scope variable must reside in constant address space
-thread uint v498 = 0u;
-            ^
-program_source:503:13: error: program scope variable must reside in constant address space
-thread uint v499 = 0u;
-            ^
-program_source:504:13: error: program scope variable must reside in constant address space
-thread uint v500 = 0u;
-            ^
-program_source:505:13: error: program scope variable must reside in constant address space
-thread uint v501 = 0u;
-            ^
-program_source:506:13: error: program scope variable must reside in constant address space
-thread uint v502 = 0u;
-            ^
-program_source:507:13: error: program scope variable must reside in constant address space
-thread uint v503 = 0u;
-            ^
-program_source:508:13: error: program scope variable must reside in constant address space
-thread uint v504 = 0u;
-            ^
-program_source:509:13: error: program scope variable must reside in constant address space
-thread uint v505 = 0u;
-            ^
-program_source:510:13: error: program scope variable must reside in constant address space
-thread uint v506 = 0u;
-            ^
-program_source:511:13: error: program scope variable must reside in constant address space
-thread uint v507 = 0u;
-            ^
-program_source:512:13: error: program scope variable must reside in constant address space
-thread uint v508 = 0u;
-            ^
-program_source:513:13: error: program scope variable must reside in constant address space
-thread uint v509 = 0u;
-            ^
-program_source:514:13: error: program scope variable must reside in constant address space
-thread uint v510 = 0u;
-            ^
-program_source:515:13: error: program scope variable must reside in constant address space
-thread uint v511 = 0u;
-            ^
-program_source:516:13: error: program scope variable must reside in constant address space
-thread uint v512 = 0u;
-            ^
-program_source:517:13: error: program scope variable must reside in constant address space
-thread uint v513 = 0u;
-            ^
-program_source:518:13: error: program scope variable must reside in constant address space
-thread uint v514 = 0u;
-            ^
-program_source:519:13: error: program scope variable must reside in constant address space
-thread uint v515 = 0u;
-            ^
-program_source:520:13: error: program scope variable must reside in constant address space
-thread uint v516 = 0u;
-            ^
-program_source:521:13: error: program scope variable must reside in constant address space
-thread uint v517 = 0u;
-            ^
-program_source:522:13: error: program scope variable must reside in constant address space
-thread uint v518 = 0u;
-            ^
-program_source:523:13: error: program scope variable must reside in constant address space
-thread uint v519 = 0u;
-            ^
-program_source:524:13: error: program scope variable must reside in constant address space
-thread uint v520 = 0u;
-            ^
-program_source:525:13: error: program scope variable must reside in constant address space
-thread uint v521 = 0u;
-            ^
-program_source:526:13: error: program scope variable must reside in constant address space
-thread uint v522 = 0u;
-            ^
-program_source:527:13: error: program scope variable must reside in constant address space
-thread uint v523 = 0u;
-            ^
-program_source:528:13: error: program scope variable must reside in constant address space
-thread uint v524 = 0u;
-            ^
-program_source:529:13: error: program scope variable must reside in constant address space
-thread uint v525 = 0u;
-            ^
-program_source:530:13: error: program scope variable must reside in constant address space
-thread uint v526 = 0u;
-            ^
-program_source:531:13: error: program scope variable must reside in constant address space
-thread uint v527 = 0u;
-            ^
-program_source:532:13: error: program scope variable must reside in constant address space
-thread uint v528 = 0u;
-            ^
-program_source:533:13: error: program scope variable must reside in constant address space
-thread uint v529 = 0u;
-            ^
-program_source:534:13: error: program scope variable must reside in constant address space
-thread uint v530 = 0u;
-            ^
-program_source:535:13: error: program scope variable must reside in constant address space
-thread uint v531 = 0u;
-            ^
-program_source:536:13: error: program scope variable must reside in constant address space
-thread uint v532 = 0u;
-            ^
-program_source:537:13: error: program scope variable must reside in constant address space
-thread uint v533 = 0u;
-            ^
-program_source:538:13: error: program scope variable must reside in constant address space
-thread uint v534 = 0u;
-            ^
-program_source:539:13: error: program scope variable must reside in constant address space
-thread uint v535 = 0u;
-            ^
-program_source:540:13: error: program scope variable must reside in constant address space
-thread uint v536 = 0u;
-            ^
-program_source:541:13: error: program scope variable must reside in constant address space
-thread uint v537 = 0u;
-            ^
-program_source:542:13: error: program scope variable must reside in constant address space
-thread uint v538 = 0u;
-            ^
-program_source:543:13: error: program scope variable must reside in constant address space
-thread uint v539 = 0u;
-            ^
-program_source:544:13: error: program scope variable must reside in constant address space
-thread uint v540 = 0u;
-            ^
-program_source:545:13: error: program scope variable must reside in constant address space
-thread uint v541 = 0u;
-            ^
-program_source:546:13: error: program scope variable must reside in constant address space
-thread uint v542 = 0u;
-            ^
-program_source:547:13: error: program scope variable must reside in constant address space
-thread uint v543 = 0u;
-            ^
-program_source:548:13: error: program scope variable must reside in constant address space
-thread uint v544 = 0u;
-            ^
-program_source:549:13: error: program scope variable must reside in constant address space
-thread uint v545 = 0u;
-            ^
-program_source:550:13: error: program scope variable must reside in constant address space
-thread uint v546 = 0u;
-            ^
-program_source:551:13: error: program scope variable must reside in constant address space
-thread uint v547 = 0u;
-            ^
-program_source:552:13: error: program scope variable must reside in constant address space
-thread uint v548 = 0u;
-            ^
-program_source:553:13: error: program scope variable must reside in constant address space
-thread uint v549 = 0u;
-            ^
-program_source:554:13: error: program scope variable must reside in constant address space
-thread uint v550 = 0u;
-            ^
-program_source:555:13: error: program scope variable must reside in constant address space
-thread uint v551 = 0u;
-            ^
-program_source:556:13: error: program scope variable must reside in constant address space
-thread uint v552 = 0u;
-            ^
-program_source:557:13: error: program scope variable must reside in constant address space
-thread uint v553 = 0u;
-            ^
-program_source:558:13: error: program scope variable must reside in constant address space
-thread uint v554 = 0u;
-            ^
-program_source:559:13: error: program scope variable must reside in constant address space
-thread uint v555 = 0u;
-            ^
-program_source:560:13: error: program scope variable must reside in constant address space
-thread uint v556 = 0u;
-            ^
-program_source:561:13: error: program scope variable must reside in constant address space
-thread uint v557 = 0u;
-            ^
-program_source:562:13: error: program scope variable must reside in constant address space
-thread uint v558 = 0u;
-            ^
-program_source:563:13: error: program scope variable must reside in constant address space
-thread uint v559 = 0u;
-            ^
-program_source:564:13: error: program scope variable must reside in constant address space
-thread uint v560 = 0u;
-            ^
-program_source:565:13: error: program scope variable must reside in constant address space
-thread uint v561 = 0u;
-            ^
-program_source:566:13: error: program scope variable must reside in constant address space
-thread uint v562 = 0u;
-            ^
-program_source:567:13: error: program scope variable must reside in constant address space
-thread uint v563 = 0u;
-            ^
-program_source:568:13: error: program scope variable must reside in constant address space
-thread uint v564 = 0u;
-            ^
-program_source:569:13: error: program scope variable must reside in constant address space
-thread uint v565 = 0u;
-            ^
-program_source:570:13: error: program scope variable must reside in constant address space
-thread uint v566 = 0u;
-            ^
-program_source:571:13: error: program scope variable must reside in constant address space
-thread uint v567 = 0u;
-            ^
-program_source:572:13: error: program scope variable must reside in constant address space
-thread uint v568 = 0u;
-            ^
-program_source:573:13: error: program scope variable must reside in constant address space
-thread uint v569 = 0u;
-            ^
-program_source:574:13: error: program scope variable must reside in constant address space
-thread uint v570 = 0u;
-            ^
-program_source:575:13: error: program scope variable must reside in constant address space
-thread uint v571 = 0u;
-            ^
-program_source:576:13: error: program scope variable must reside in constant address space
-thread uint v572 = 0u;
-            ^
-program_source:577:13: error: program scope variable must reside in constant address space
-thread uint v573 = 0u;
-            ^
-program_source:578:13: error: program scope variable must reside in constant address space
-thread uint v574 = 0u;
-            ^
-program_source:579:13: error: program scope variable must reside in constant address space
-thread uint v575 = 0u;
-            ^
-program_source:580:13: error: program scope variable must reside in constant address space
-thread uint v576 = 0u;
-            ^
-program_source:581:13: error: program scope variable must reside in constant address space
-thread uint v577 = 0u;
-            ^
-program_source:582:13: error: program scope variable must reside in constant address space
-thread uint v578 = 0u;
-            ^
-program_source:583:13: error: program scope variable must reside in constant address space
-thread uint v579 = 0u;
-            ^
-program_source:584:13: error: program scope variable must reside in constant address space
-thread uint v580 = 0u;
-            ^
-program_source:585:13: error: program scope variable must reside in constant address space
-thread uint v581 = 0u;
-            ^
-program_source:586:13: error: program scope variable must reside in constant address space
-thread uint v582 = 0u;
-            ^
-program_source:587:13: error: program scope variable must reside in constant address space
-thread uint v583 = 0u;
-            ^
-program_source:588:13: error: program scope variable must reside in constant address space
-thread uint v584 = 0u;
-            ^
-program_source:589:13: error: program scope variable must reside in constant address space
-thread uint v585 = 0u;
-            ^
-program_source:590:13: error: program scope variable must reside in constant address space
-thread uint v586 = 0u;
-            ^
-program_source:591:13: error: program scope variable must reside in constant address space
-thread uint v587 = 0u;
-            ^
-program_source:592:13: error: program scope variable must reside in constant address space
-thread uint v588 = 0u;
-            ^
-program_source:593:13: error: program scope variable must reside in constant address space
-thread uint v589 = 0u;
-            ^
-program_source:594:13: error: program scope variable must reside in constant address space
-thread uint v590 = 0u;
-            ^
-program_source:595:13: error: program scope variable must reside in constant address space
-thread uint v591 = 0u;
-            ^
-program_source:596:13: error: program scope variable must reside in constant address space
-thread uint v592 = 0u;
-            ^
-program_source:597:13: error: program scope variable must reside in constant address space
-thread uint v593 = 0u;
-            ^
-program_source:598:13: error: program scope variable must reside in constant address space
-thread uint v594 = 0u;
-            ^
-program_source:599:13: error: program scope variable must reside in constant address space
-thread uint v595 = 0u;
-            ^
-program_source:600:13: error: program scope variable must reside in constant address space
-thread uint v596 = 0u;
-            ^
-program_source:601:13: error: program scope variable must reside in constant address space
-thread uint v597 = 0u;
-            ^
-program_source:602:13: error: program scope variable must reside in constant address space
-thread uint v598 = 0u;
-            ^
-program_source:603:13: error: program scope variable must reside in constant address space
-thread uint v599 = 0u;
-            ^
-program_source:604:13: error: program scope variable must reside in constant address space
-thread uint v600 = 0u;
-            ^
-program_source:605:13: error: program scope variable must reside in constant address space
-thread uint v601 = 0u;
-            ^
-program_source:606:13: error: program scope variable must reside in constant address space
-thread uint v602 = 0u;
-            ^
-program_source:607:13: error: program scope variable must reside in constant address space
-thread uint v603 = 0u;
-            ^
-program_source:608:13: error: program scope variable must reside in constant address space
-thread uint v604 = 0u;
-            ^
-program_source:609:13: error: program scope variable must reside in constant address space
-thread uint v605 = 0u;
-            ^
-program_source:610:13: error: program scope variable must reside in constant address space
-thread uint v606 = 0u;
-            ^
-program_source:611:13: error: program scope variable must reside in constant address space
-thread uint v607 = 0u;
-            ^
-program_source:612:13: error: program scope variable must reside in constant address space
-thread uint v608 = 0u;
-            ^
-program_source:613:13: error: program scope variable must reside in constant address space
-thread uint v609 = 0u;
-            ^
-program_source:614:13: error: program scope variable must reside in constant address space
-thread uint v610 = 0u;
-            ^
-program_source:615:13: error: program scope variable must reside in constant address space
-thread uint v611 = 0u;
-            ^
-program_source:616:13: error: program scope variable must reside in constant address space
-thread uint v612 = 0u;
-            ^
-program_source:617:13: error: program scope variable must reside in constant address space
-thread uint v613 = 0u;
-            ^
-program_source:618:13: error: program scope variable must reside in constant address space
-thread uint v614 = 0u;
-            ^
-program_source:619:13: error: program scope variable must reside in constant address space
-thread uint v615 = 0u;
-            ^
-program_source:620:13: error: program scope variable must reside in constant address space
-thread uint v616 = 0u;
-            ^
-program_source:621:13: error: program scope variable must reside in constant address space
-thread uint v617 = 0u;
-            ^
-program_source:622:13: error: program scope variable must reside in constant address space
-thread uint v618 = 0u;
-            ^
-program_source:623:13: error: program scope variable must reside in constant address space
-thread uint v619 = 0u;
-            ^
-program_source:624:13: error: program scope variable must reside in constant address space
-thread uint v620 = 0u;
-            ^
-program_source:625:13: error: program scope variable must reside in constant address space
-thread uint v621 = 0u;
-            ^
-program_source:626:13: error: program scope variable must reside in constant address space
-thread uint v622 = 0u;
-            ^
-program_source:627:13: error: program scope variable must reside in constant address space
-thread uint v623 = 0u;
-            ^
-program_source:628:13: error: program scope variable must reside in constant address space
-thread uint v624 = 0u;
-            ^
-program_source:629:13: error: program scope variable must reside in constant address space
-thread uint v625 = 0u;
-            ^
-program_source:630:13: error: program scope variable must reside in constant address space
-thread uint v626 = 0u;
-            ^
-program_source:631:13: error: program scope variable must reside in constant address space
-thread uint v627 = 0u;
-            ^
-program_source:632:13: error: program scope variable must reside in constant address space
-thread uint v628 = 0u;
-            ^
-program_source:633:13: error: program scope variable must reside in constant address space
-thread uint v629 = 0u;
-            ^
-program_source:634:13: error: program scope variable must reside in constant address space
-thread uint v630 = 0u;
-            ^
-program_source:635:13: error: program scope variable must reside in constant address space
-thread uint v631 = 0u;
-            ^
-program_source:636:13: error: program scope variable must reside in constant address space
-thread uint v632 = 0u;
-            ^
-program_source:637:13: error: program scope variable must reside in constant address space
-thread uint v633 = 0u;
-            ^
-program_source:638:13: error: program scope variable must reside in constant address space
-thread uint v634 = 0u;
-            ^
-program_source:639:13: error: program scope variable must reside in constant address space
-thread uint v635 = 0u;
-            ^
-program_source:640:13: error: program scope variable must reside in constant address space
-thread uint v636 = 0u;
-            ^
-program_source:641:13: error: program scope variable must reside in constant address space
-thread uint v637 = 0u;
-            ^
-program_source:642:13: error: program scope variable must reside in constant address space
-thread uint v638 = 0u;
-            ^
-program_source:643:13: error: program scope variable must reside in constant address space
-thread uint v639 = 0u;
-            ^
-program_source:644:13: error: program scope variable must reside in constant address space
-thread uint v640 = 0u;
-            ^
-program_source:645:13: error: program scope variable must reside in constant address space
-thread uint v641 = 0u;
-            ^
-program_source:646:13: error: program scope variable must reside in constant address space
-thread uint v642 = 0u;
-            ^
-program_source:647:13: error: program scope variable must reside in constant address space
-thread uint v643 = 0u;
-            ^
-program_source:648:13: error: program scope variable must reside in constant address space
-thread uint v644 = 0u;
-            ^
-program_source:649:13: error: program scope variable must reside in constant address space
-thread uint v645 = 0u;
-            ^
-program_source:650:13: error: program scope variable must reside in constant address space
-thread uint v646 = 0u;
-            ^
-program_source:651:13: error: program scope variable must reside in constant address space
-thread uint v647 = 0u;
-            ^
-program_source:652:13: error: program scope variable must reside in constant address space
-thread uint v648 = 0u;
-            ^
-program_source:653:13: error: program scope variable must reside in constant address space
-thread uint v649 = 0u;
-            ^
-program_source:654:13: error: program scope variable must reside in constant address space
-thread uint v650 = 0u;
-            ^
-program_source:655:13: error: program scope variable must reside in constant address space
-thread uint v651 = 0u;
-            ^
-program_source:656:13: error: program scope variable must reside in constant address space
-thread uint v652 = 0u;
-            ^
-program_source:657:13: error: program scope variable must reside in constant address space
-thread uint v653 = 0u;
-            ^
-program_source:658:13: error: program scope variable must reside in constant address space
-thread uint v654 = 0u;
-            ^
-program_source:659:13: error: program scope variable must reside in constant address space
-thread uint v655 = 0u;
-            ^
-program_source:660:13: error: program scope variable must reside in constant address space
-thread uint v656 = 0u;
-            ^
-program_source:661:13: error: program scope variable must reside in constant address space
-thread uint v657 = 0u;
-            ^
-program_source:662:13: error: program scope variable must reside in constant address space
-thread uint v658 = 0u;
-            ^
-program_source:663:13: error: program scope variable must reside in constant address space
-thread uint v659 = 0u;
-            ^
-program_source:664:13: error: program scope variable must reside in constant address space
-thread uint v660 = 0u;
-            ^
-program_source:665:13: error: program scope variable must reside in constant address space
-thread uint v661 = 0u;
-            ^
-program_source:666:13: error: program scope variable must reside in constant address space
-thread uint v662 = 0u;
-            ^
-program_source:667:13: error: program scope variable must reside in constant address space
-thread uint v663 = 0u;
-            ^
-program_source:668:13: error: program scope variable must reside in constant address space
-thread uint v664 = 0u;
-            ^
-program_source:669:13: error: program scope variable must reside in constant address space
-thread uint v665 = 0u;
-            ^
-program_source:670:13: error: program scope variable must reside in constant address space
-thread uint v666 = 0u;
-            ^
-program_source:671:13: error: program scope variable must reside in constant address space
-thread uint v667 = 0u;
-            ^
-program_source:672:13: error: program scope variable must reside in constant address space
-thread uint v668 = 0u;
-            ^
-program_source:673:13: error: program scope variable must reside in constant address space
-thread uint v669 = 0u;
-            ^
-program_source:674:13: error: program scope variable must reside in constant address space
-thread uint v670 = 0u;
-            ^
-program_source:675:13: error: program scope variable must reside in constant address space
-thread uint v671 = 0u;
-            ^
-program_source:676:13: error: program scope variable must reside in constant address space
-thread uint v672 = 0u;
-            ^
-program_source:677:13: error: program scope variable must reside in constant address space
-thread uint v673 = 0u;
-            ^
-program_source:678:13: error: program scope variable must reside in constant address space
-thread uint v674 = 0u;
-            ^
-program_source:679:13: error: program scope variable must reside in constant address space
-thread uint v675 = 0u;
-            ^
-program_source:680:13: error: program scope variable must reside in constant address space
-thread uint v676 = 0u;
-            ^
-program_source:681:13: error: program scope variable must reside in constant address space
-thread uint v677 = 0u;
-            ^
-program_source:682:13: error: program scope variable must reside in constant address space
-thread uint v678 = 0u;
-            ^
-program_source:683:13: error: program scope variable must reside in constant address space
-thread uint v679 = 0u;
-            ^
-program_source:684:13: error: program scope variable must reside in constant address space
-thread uint v680 = 0u;
-            ^
-program_source:685:13: error: program scope variable must reside in constant address space
-thread uint v681 = 0u;
-            ^
-program_source:686:13: error: program scope variable must reside in constant address space
-thread uint v682 = 0u;
-            ^
-program_source:687:13: error: program scope variable must reside in constant address space
-thread uint v683 = 0u;
-            ^
-program_source:688:13: error: program scope variable must reside in constant address space
-thread uint v684 = 0u;
-            ^
-program_source:689:13: error: program scope variable must reside in constant address space
-thread uint v685 = 0u;
-            ^
-program_source:690:13: error: program scope variable must reside in constant address space
-thread uint v686 = 0u;
-            ^
-program_source:691:13: error: program scope variable must reside in constant address space
-thread uint v687 = 0u;
-            ^
-program_source:692:13: error: program scope variable must reside in constant address space
-thread uint v688 = 0u;
-            ^
-program_source:693:13: error: program scope variable must reside in constant address space
-thread uint v689 = 0u;
-            ^
-program_source:694:13: error: program scope variable must reside in constant address space
-thread uint v690 = 0u;
-            ^
-program_source:695:13: error: program scope variable must reside in constant address space
-thread uint v691 = 0u;
-            ^
-program_source:696:13: error: program scope variable must reside in constant address space
-thread uint v692 = 0u;
-            ^
-program_source:697:13: error: program scope variable must reside in constant address space
-thread uint v693 = 0u;
-            ^
-program_source:698:13: error: program scope variable must reside in constant address space
-thread uint v694 = 0u;
-            ^
-program_source:699:13: error: program scope variable must reside in constant address space
-thread uint v695 = 0u;
-            ^
-program_source:700:13: error: program scope variable must reside in constant address space
-thread uint v696 = 0u;
-            ^
-program_source:701:13: error: program scope variable must reside in constant address space
-thread uint v697 = 0u;
-            ^
-program_source:702:13: error: program scope variable must reside in constant address space
-thread uint v698 = 0u;
-            ^
-program_source:703:13: error: program scope variable must reside in constant address space
-thread uint v699 = 0u;
-            ^
-program_source:704:13: error: program scope variable must reside in constant address space
-thread uint v700 = 0u;
-            ^
-program_source:705:13: error: program scope variable must reside in constant address space
-thread uint v701 = 0u;
-            ^
-program_source:706:13: error: program scope variable must reside in constant address space
-thread uint v702 = 0u;
-            ^
-program_source:707:13: error: program scope variable must reside in constant address space
-thread uint v703 = 0u;
-            ^
-program_source:708:13: error: program scope variable must reside in constant address space
-thread uint v704 = 0u;
-            ^
-program_source:709:13: error: program scope variable must reside in constant address space
-thread uint v705 = 0u;
-            ^
-program_source:710:13: error: program scope variable must reside in constant address space
-thread uint v706 = 0u;
-            ^
-program_source:711:13: error: program scope variable must reside in constant address space
-thread uint v707 = 0u;
-            ^
-program_source:712:13: error: program scope variable must reside in constant address space
-thread uint v708 = 0u;
-            ^
-program_source:713:13: error: program scope variable must reside in constant address space
-thread uint v709 = 0u;
-            ^
-program_source:714:13: error: program scope variable must reside in constant address space
-thread uint v710 = 0u;
-            ^
-program_source:715:13: error: program scope variable must reside in constant address space
-thread uint v711 = 0u;
-            ^
-program_source:716:13: error: program scope variable must reside in constant address space
-thread uint v712 = 0u;
-            ^
-program_source:717:13: error: program scope variable must reside in constant address space
-thread uint v713 = 0u;
-            ^
-program_source:718:13: error: program scope variable must reside in constant address space
-thread uint v714 = 0u;
-            ^
-program_source:719:13: error: program scope variable must reside in constant address space
-thread uint v715 = 0u;
-            ^
-program_source:720:13: error: program scope variable must reside in constant address space
-thread uint v716 = 0u;
-            ^
-program_source:721:13: error: program scope variable must reside in constant address space
-thread uint v717 = 0u;
-            ^
-program_source:722:13: error: program scope variable must reside in constant address space
-thread uint v718 = 0u;
-            ^
-program_source:723:13: error: program scope variable must reside in constant address space
-thread uint v719 = 0u;
-            ^
-program_source:724:13: error: program scope variable must reside in constant address space
-thread uint v720 = 0u;
-            ^
-program_source:725:13: error: program scope variable must reside in constant address space
-thread uint v721 = 0u;
-            ^
-program_source:726:13: error: program scope variable must reside in constant address space
-thread uint v722 = 0u;
-            ^
-program_source:727:13: error: program scope variable must reside in constant address space
-thread uint v723 = 0u;
-            ^
-program_source:728:13: error: program scope variable must reside in constant address space
-thread uint v724 = 0u;
-            ^
-program_source:729:13: error: program scope variable must reside in constant address space
-thread uint v725 = 0u;
-            ^
-program_source:730:13: error: program scope variable must reside in constant address space
-thread uint v726 = 0u;
-            ^
-program_source:731:13: error: program scope variable must reside in constant address space
-thread uint v727 = 0u;
-            ^
-program_source:732:13: error: program scope variable must reside in constant address space
-thread uint v728 = 0u;
-            ^
-program_source:733:13: error: program scope variable must reside in constant address space
-thread uint v729 = 0u;
-            ^
-program_source:734:13: error: program scope variable must reside in constant address space
-thread uint v730 = 0u;
-            ^
-program_source:735:13: error: program scope variable must reside in constant address space
-thread uint v731 = 0u;
-            ^
-program_source:736:13: error: program scope variable must reside in constant address space
-thread uint v732 = 0u;
-            ^
-program_source:737:13: error: program scope variable must reside in constant address space
-thread uint v733 = 0u;
-            ^
-program_source:738:13: error: program scope variable must reside in constant address space
-thread uint v734 = 0u;
-            ^
-program_source:739:13: error: program scope variable must reside in constant address space
-thread uint v735 = 0u;
-            ^
-program_source:740:13: error: program scope variable must reside in constant address space
-thread uint v736 = 0u;
-            ^
-program_source:741:13: error: program scope variable must reside in constant address space
-thread uint v737 = 0u;
-            ^
-program_source:742:13: error: program scope variable must reside in constant address space
-thread uint v738 = 0u;
-            ^
-program_source:743:13: error: program scope variable must reside in constant address space
-thread uint v739 = 0u;
-            ^
-program_source:744:13: error: program scope variable must reside in constant address space
-thread uint v740 = 0u;
-            ^
-program_source:745:13: error: program scope variable must reside in constant address space
-thread uint v741 = 0u;
-            ^
-program_source:746:13: error: program scope variable must reside in constant address space
-thread uint v742 = 0u;
-            ^
-program_source:747:13: error: program scope variable must reside in constant address space
-thread uint v743 = 0u;
-            ^
-program_source:748:13: error: program scope variable must reside in constant address space
-thread uint v744 = 0u;
-            ^
-program_source:749:13: error: program scope variable must reside in constant address space
-thread uint v745 = 0u;
-            ^
-program_source:750:13: error: program scope variable must reside in constant address space
-thread uint v746 = 0u;
-            ^
-program_source:751:13: error: program scope variable must reside in constant address space
-thread uint v747 = 0u;
-            ^
-program_source:752:13: error: program scope variable must reside in constant address space
-thread uint v748 = 0u;
-            ^
-program_source:753:13: error: program scope variable must reside in constant address space
-thread uint v749 = 0u;
-            ^
-program_source:754:13: error: program scope variable must reside in constant address space
-thread uint v750 = 0u;
-            ^
-program_source:755:13: error: program scope variable must reside in constant address space
-thread uint v751 = 0u;
-            ^
-program_source:756:13: error: program scope variable must reside in constant address space
-thread uint v752 = 0u;
-            ^
-program_source:757:13: error: program scope variable must reside in constant address space
-thread uint v753 = 0u;
-            ^
-program_source:758:13: error: program scope variable must reside in constant address space
-thread uint v754 = 0u;
-            ^
-program_source:759:13: error: program scope variable must reside in constant address space
-thread uint v755 = 0u;
-            ^
-program_source:760:13: error: program scope variable must reside in constant address space
-thread uint v756 = 0u;
-            ^
-program_source:761:13: error: program scope variable must reside in constant address space
-thread uint v757 = 0u;
-            ^
-program_source:762:13: error: program scope variable must reside in constant address space
-thread uint v758 = 0u;
-            ^
-program_source:763:13: error: program scope variable must reside in constant address space
-thread uint v759 = 0u;
-            ^
-program_source:764:13: error: program scope variable must reside in constant address space
-thread uint v760 = 0u;
-            ^
-program_source:765:13: error: program scope variable must reside in constant address space
-thread uint v761 = 0u;
-            ^
-program_source:766:13: error: program scope variable must reside in constant address space
-thread uint v762 = 0u;
-            ^
-program_source:767:13: error: program scope variable must reside in constant address space
-thread uint v763 = 0u;
-            ^
-program_source:768:13: error: program scope variable must reside in constant address space
-thread uint v764 = 0u;
-            ^
-program_source:769:13: error: program scope variable must reside in constant address space
-thread uint v765 = 0u;
-            ^
-program_source:770:13: error: program scope variable must reside in constant address space
-thread uint v766 = 0u;
-            ^
-program_source:771:13: error: program scope variable must reside in constant address space
-thread uint v767 = 0u;
-            ^
-program_source:772:13: error: program scope variable must reside in constant address space
-thread uint v768 = 0u;
-            ^
-program_source:773:13: error: program scope variable must reside in constant address space
-thread uint v769 = 0u;
-            ^
-program_source:774:13: error: program scope variable must reside in constant address space
-thread uint v770 = 0u;
-            ^
-program_source:775:13: error: program scope variable must reside in constant address space
-thread uint v771 = 0u;
-            ^
-program_source:776:13: error: program scope variable must reside in constant address space
-thread uint v772 = 0u;
-            ^
-program_source:777:13: error: program scope variable must reside in constant address space
-thread uint v773 = 0u;
-            ^
-program_source:778:13: error: program scope variable must reside in constant address space
-thread uint v774 = 0u;
-            ^
-program_source:779:13: error: program scope variable must reside in constant address space
-thread uint v775 = 0u;
-            ^
-program_source:780:13: error: program scope variable must reside in constant address space
-thread uint v776 = 0u;
-            ^
-program_source:781:13: error: program scope variable must reside in constant address space
-thread uint v777 = 0u;
-            ^
-program_source:782:13: error: program scope variable must reside in constant address space
-thread uint v778 = 0u;
-            ^
-program_source:783:13: error: program scope variable must reside in constant address space
-thread uint v779 = 0u;
-            ^
-program_source:784:13: error: program scope variable must reside in constant address space
-thread uint v780 = 0u;
-            ^
-program_source:785:13: error: program scope variable must reside in constant address space
-thread uint v781 = 0u;
-            ^
-program_source:786:13: error: program scope variable must reside in constant address space
-thread uint v782 = 0u;
-            ^
-program_source:787:13: error: program scope variable must reside in constant address space
-thread uint v783 = 0u;
-            ^
-program_source:788:13: error: program scope variable must reside in constant address space
-thread uint v784 = 0u;
-            ^
-program_source:789:13: error: program scope variable must reside in constant address space
-thread uint v785 = 0u;
-            ^
-program_source:790:13: error: program scope variable must reside in constant address space
-thread uint v786 = 0u;
-            ^
-program_source:791:13: error: program scope variable must reside in constant address space
-thread uint v787 = 0u;
-            ^
-program_source:792:13: error: program scope variable must reside in constant address space
-thread uint v788 = 0u;
-            ^
-program_source:793:13: error: program scope variable must reside in constant address space
-thread uint v789 = 0u;
-            ^
-program_source:794:13: error: program scope variable must reside in constant address space
-thread uint v790 = 0u;
-            ^
-program_source:795:13: error: program scope variable must reside in constant address space
-thread uint v791 = 0u;
-            ^
-program_source:796:13: error: program scope variable must reside in constant address space
-thread uint v792 = 0u;
-            ^
-program_source:797:13: error: program scope variable must reside in constant address space
-thread uint v793 = 0u;
-            ^
-program_source:798:13: error: program scope variable must reside in constant address space
-thread uint v794 = 0u;
-            ^
-program_source:799:13: error: program scope variable must reside in constant address space
-thread uint v795 = 0u;
-            ^
-program_source:800:13: error: program scope variable must reside in constant address space
-thread uint v796 = 0u;
-            ^
-program_source:801:13: error: program scope variable must reside in constant address space
-thread uint v797 = 0u;
-            ^
-program_source:802:13: error: program scope variable must reside in constant address space
-thread uint v798 = 0u;
-            ^
-program_source:803:13: error: program scope variable must reside in constant address space
-thread uint v799 = 0u;
-            ^
-program_source:804:13: error: program scope variable must reside in constant address space
-thread uint v800 = 0u;
-            ^
-program_source:805:13: error: program scope variable must reside in constant address space
-thread uint v801 = 0u;
-            ^
-program_source:806:13: error: program scope variable must reside in constant address space
-thread uint v802 = 0u;
-            ^
-program_source:807:13: error: program scope variable must reside in constant address space
-thread uint v803 = 0u;
-            ^
-program_source:808:13: error: program scope variable must reside in constant address space
-thread uint v804 = 0u;
-            ^
-program_source:809:13: error: program scope variable must reside in constant address space
-thread uint v805 = 0u;
-            ^
-program_source:810:13: error: program scope variable must reside in constant address space
-thread uint v806 = 0u;
-            ^
-program_source:811:13: error: program scope variable must reside in constant address space
-thread uint v807 = 0u;
-            ^
-program_source:812:13: error: program scope variable must reside in constant address space
-thread uint v808 = 0u;
-            ^
-program_source:813:13: error: program scope variable must reside in constant address space
-thread uint v809 = 0u;
-            ^
-program_source:814:13: error: program scope variable must reside in constant address space
-thread uint v810 = 0u;
-            ^
-program_source:815:13: error: program scope variable must reside in constant address space
-thread uint v811 = 0u;
-            ^
-program_source:816:13: error: program scope variable must reside in constant address space
-thread uint v812 = 0u;
-            ^
-program_source:817:13: error: program scope variable must reside in constant address space
-thread uint v813 = 0u;
-            ^
-program_source:818:13: error: program scope variable must reside in constant address space
-thread uint v814 = 0u;
-            ^
-program_source:819:13: error: program scope variable must reside in constant address space
-thread uint v815 = 0u;
-            ^
-program_source:820:13: error: program scope variable must reside in constant address space
-thread uint v816 = 0u;
-            ^
-program_source:821:13: error: program scope variable must reside in constant address space
-thread uint v817 = 0u;
-            ^
-program_source:822:13: error: program scope variable must reside in constant address space
-thread uint v818 = 0u;
-            ^
-program_source:823:13: error: program scope variable must reside in constant address space
-thread uint v819 = 0u;
-            ^
-program_source:824:13: error: program scope variable must reside in constant address space
-thread uint v820 = 0u;
-            ^
-program_source:825:13: error: program scope variable must reside in constant address space
-thread uint v821 = 0u;
-            ^
-program_source:826:13: error: program scope variable must reside in constant address space
-thread uint v822 = 0u;
-            ^
-program_source:827:13: error: program scope variable must reside in constant address space
-thread uint v823 = 0u;
-            ^
-program_source:828:13: error: program scope variable must reside in constant address space
-thread uint v824 = 0u;
-            ^
-program_source:829:13: error: program scope variable must reside in constant address space
-thread uint v825 = 0u;
-            ^
-program_source:830:13: error: program scope variable must reside in constant address space
-thread uint v826 = 0u;
-            ^
-program_source:831:13: error: program scope variable must reside in constant address space
-thread uint v827 = 0u;
-            ^
-program_source:832:13: error: program scope variable must reside in constant address space
-thread uint v828 = 0u;
-            ^
-program_source:833:13: error: program scope variable must reside in constant address space
-thread uint v829 = 0u;
-            ^
-program_source:834:13: error: program scope variable must reside in constant address space
-thread uint v830 = 0u;
-            ^
-program_source:835:13: error: program scope variable must reside in constant address space
-thread uint v831 = 0u;
-            ^
-program_source:836:13: error: program scope variable must reside in constant address space
-thread uint v832 = 0u;
-            ^
-program_source:837:13: error: program scope variable must reside in constant address space
-thread uint v833 = 0u;
-            ^
-program_source:838:13: error: program scope variable must reside in constant address space
-thread uint v834 = 0u;
-            ^
-program_source:839:13: error: program scope variable must reside in constant address space
-thread uint v835 = 0u;
-            ^
-program_source:840:13: error: program scope variable must reside in constant address space
-thread uint v836 = 0u;
-            ^
-program_source:841:13: error: program scope variable must reside in constant address space
-thread uint v837 = 0u;
-            ^
-program_source:842:13: error: program scope variable must reside in constant address space
-thread uint v838 = 0u;
-            ^
-program_source:843:13: error: program scope variable must reside in constant address space
-thread uint v839 = 0u;
-            ^
-program_source:844:13: error: program scope variable must reside in constant address space
-thread uint v840 = 0u;
-            ^
-program_source:845:13: error: program scope variable must reside in constant address space
-thread uint v841 = 0u;
-            ^
-program_source:846:13: error: program scope variable must reside in constant address space
-thread uint v842 = 0u;
-            ^
-program_source:847:13: error: program scope variable must reside in constant address space
-thread uint v843 = 0u;
-            ^
-program_source:848:13: error: program scope variable must reside in constant address space
-thread uint v844 = 0u;
-            ^
-program_source:849:13: error: program scope variable must reside in constant address space
-thread uint v845 = 0u;
-            ^
-program_source:850:13: error: program scope variable must reside in constant address space
-thread uint v846 = 0u;
-            ^
-program_source:851:13: error: program scope variable must reside in constant address space
-thread uint v847 = 0u;
-            ^
-program_source:852:13: error: program scope variable must reside in constant address space
-thread uint v848 = 0u;
-            ^
-program_source:853:13: error: program scope variable must reside in constant address space
-thread uint v849 = 0u;
-            ^
-program_source:854:13: error: program scope variable must reside in constant address space
-thread uint v850 = 0u;
-            ^
-program_source:855:13: error: program scope variable must reside in constant address space
-thread uint v851 = 0u;
-            ^
-program_source:856:13: error: program scope variable must reside in constant address space
-thread uint v852 = 0u;
-            ^
-program_source:857:13: error: program scope variable must reside in constant address space
-thread uint v853 = 0u;
-            ^
-program_source:858:13: error: program scope variable must reside in constant address space
-thread uint v854 = 0u;
-            ^
-program_source:859:13: error: program scope variable must reside in constant address space
-thread uint v855 = 0u;
-            ^
-program_source:860:13: error: program scope variable must reside in constant address space
-thread uint v856 = 0u;
-            ^
-program_source:861:13: error: program scope variable must reside in constant address space
-thread uint v857 = 0u;
-            ^
-program_source:862:13: error: program scope variable must reside in constant address space
-thread uint v858 = 0u;
-            ^
-program_source:863:13: error: program scope variable must reside in constant address space
-thread uint v859 = 0u;
-            ^
-program_source:864:13: error: program scope variable must reside in constant address space
-thread uint v860 = 0u;
-            ^
-program_source:865:13: error: program scope variable must reside in constant address space
-thread uint v861 = 0u;
-            ^
-program_source:866:13: error: program scope variable must reside in constant address space
-thread uint v862 = 0u;
-            ^
-program_source:867:13: error: program scope variable must reside in constant address space
-thread uint v863 = 0u;
-            ^
-program_source:868:13: error: program scope variable must reside in constant address space
-thread uint v864 = 0u;
-            ^
-program_source:869:13: error: program scope variable must reside in constant address space
-thread uint v865 = 0u;
-            ^
-program_source:870:13: error: program scope variable must reside in constant address space
-thread uint v866 = 0u;
-            ^
-program_source:871:13: error: program scope variable must reside in constant address space
-thread uint v867 = 0u;
-            ^
-program_source:872:13: error: program scope variable must reside in constant address space
-thread uint v868 = 0u;
-            ^
-program_source:873:13: error: program scope variable must reside in constant address space
-thread uint v869 = 0u;
-            ^
-program_source:874:13: error: program scope variable must reside in constant address space
-thread uint v870 = 0u;
-            ^
-program_source:875:13: error: program scope variable must reside in constant address space
-thread uint v871 = 0u;
-            ^
-program_source:876:13: error: program scope variable must reside in constant address space
-thread uint v872 = 0u;
-            ^
-program_source:877:13: error: program scope variable must reside in constant address space
-thread uint v873 = 0u;
-            ^
-program_source:878:13: error: program scope variable must reside in constant address space
-thread uint v874 = 0u;
-            ^
-program_source:879:13: error: program scope variable must reside in constant address space
-thread uint v875 = 0u;
-            ^
-program_source:880:13: error: program scope variable must reside in constant address space
-thread uint v876 = 0u;
-            ^
-program_source:881:13: error: program scope variable must reside in constant address space
-thread uint v877 = 0u;
-            ^
-program_source:882:13: error: program scope variable must reside in constant address space
-thread uint v878 = 0u;
-            ^
-program_source:883:13: error: program scope variable must reside in constant address space
-thread uint v879 = 0u;
-            ^
-program_source:884:13: error: program scope variable must reside in constant address space
-thread uint v880 = 0u;
-            ^
-program_source:885:13: error: program scope variable must reside in constant address space
-thread uint v881 = 0u;
-            ^
-program_source:886:13: error: program scope variable must reside in constant address space
-thread uint v882 = 0u;
-            ^
-program_source:887:13: error: program scope variable must reside in constant address space
-thread uint v883 = 0u;
-            ^
-program_source:888:13: error: program scope variable must reside in constant address space
-thread uint v884 = 0u;
-            ^
-program_source:889:13: error: program scope variable must reside in constant address space
-thread uint v885 = 0u;
-            ^
-program_source:890:13: error: program scope variable must reside in constant address space
-thread uint v886 = 0u;
-            ^
-program_source:891:13: error: program scope variable must reside in constant address space
-thread uint v887 = 0u;
-            ^
-program_source:892:13: error: program scope variable must reside in constant address space
-thread uint v888 = 0u;
-            ^
-program_source:893:13: error: program scope variable must reside in constant address space
-thread uint v889 = 0u;
-            ^
-program_source:894:13: error: program scope variable must reside in constant address space
-thread uint v890 = 0u;
-            ^
-program_source:895:13: error: program scope variable must reside in constant address space
-thread uint v891 = 0u;
-            ^
-program_source:896:13: error: program scope variable must reside in constant address space
-thread uint v892 = 0u;
-            ^
-program_source:897:13: error: program scope variable must reside in constant address space
-thread uint v893 = 0u;
-            ^
-program_source:898:13: error: program scope variable must reside in constant address space
-thread uint v894 = 0u;
-            ^
-program_source:899:13: error: program scope variable must reside in constant address space
-thread uint v895 = 0u;
-            ^
-program_source:900:13: error: program scope variable must reside in constant address space
-thread uint v896 = 0u;
-            ^
-program_source:901:13: error: program scope variable must reside in constant address space
-thread uint v897 = 0u;
-            ^
-program_source:902:13: error: program scope variable must reside in constant address space
-thread uint v898 = 0u;
-            ^
-program_source:903:13: error: program scope variable must reside in constant address space
-thread uint v899 = 0u;
-            ^
-program_source:904:13: error: program scope variable must reside in constant address space
-thread uint v900 = 0u;
-            ^
-program_source:905:13: error: program scope variable must reside in constant address space
-thread uint v901 = 0u;
-            ^
-program_source:906:13: error: program scope variable must reside in constant address space
-thread uint v902 = 0u;
-            ^
-program_source:907:13: error: program scope variable must reside in constant address space
-thread uint v903 = 0u;
-            ^
-program_source:908:13: error: program scope variable must reside in constant address space
-thread uint v904 = 0u;
-            ^
-program_source:909:13: error: program scope variable must reside in constant address space
-thread uint v905 = 0u;
-            ^
-program_source:910:13: error: program scope variable must reside in constant address space
-thread uint v906 = 0u;
-            ^
-program_source:911:13: error: program scope variable must reside in constant address space
-thread uint v907 = 0u;
-            ^
-program_source:912:13: error: program scope variable must reside in constant address space
-thread uint v908 = 0u;
-            ^
-program_source:913:13: error: program scope variable must reside in constant address space
-thread uint v909 = 0u;
-            ^
-program_source:914:13: error: program scope variable must reside in constant address space
-thread uint v910 = 0u;
-            ^
-program_source:915:13: error: program scope variable must reside in constant address space
-thread uint v911 = 0u;
-            ^
-program_source:916:13: error: program scope variable must reside in constant address space
-thread uint v912 = 0u;
-            ^
-program_source:917:13: error: program scope variable must reside in constant address space
-thread uint v913 = 0u;
-            ^
-program_source:918:13: error: program scope variable must reside in constant address space
-thread uint v914 = 0u;
-            ^
-program_source:919:13: error: program scope variable must reside in constant address space
-thread uint v915 = 0u;
-            ^
-program_source:920:13: error: program scope variable must reside in constant address space
-thread uint v916 = 0u;
-            ^
-program_source:921:13: error: program scope variable must reside in constant address space
-thread uint v917 = 0u;
-            ^
-program_source:922:13: error: program scope variable must reside in constant address space
-thread uint v918 = 0u;
-            ^
-program_source:923:13: error: program scope variable must reside in constant address space
-thread uint v919 = 0u;
-            ^
-program_source:924:13: error: program scope variable must reside in constant address space
-thread uint v920 = 0u;
-            ^
-program_source:925:13: error: program scope variable must reside in constant address space
-thread uint v921 = 0u;
-            ^
-program_source:926:13: error: program scope variable must reside in constant address space
-thread uint v922 = 0u;
-            ^
-program_source:927:13: error: program scope variable must reside in constant address space
-thread uint v923 = 0u;
-            ^
-program_source:928:13: error: program scope variable must reside in constant address space
-thread uint v924 = 0u;
-            ^
-program_source:929:13: error: program scope variable must reside in constant address space
-thread uint v925 = 0u;
-            ^
-program_source:930:13: error: program scope variable must reside in constant address space
-thread uint v926 = 0u;
-            ^
-program_source:931:13: error: program scope variable must reside in constant address space
-thread uint v927 = 0u;
-            ^
-program_source:932:13: error: program scope variable must reside in constant address space
-thread uint v928 = 0u;
-            ^
-program_source:933:13: error: program scope variable must reside in constant address space
-thread uint v929 = 0u;
-            ^
-program_source:934:13: error: program scope variable must reside in constant address space
-thread uint v930 = 0u;
-            ^
-program_source:935:13: error: program scope variable must reside in constant address space
-thread uint v931 = 0u;
-            ^
-program_source:936:13: error: program scope variable must reside in constant address space
-thread uint v932 = 0u;
-            ^
-program_source:937:13: error: program scope variable must reside in constant address space
-thread uint v933 = 0u;
-            ^
-program_source:938:13: error: program scope variable must reside in constant address space
-thread uint v934 = 0u;
-            ^
-program_source:939:13: error: program scope variable must reside in constant address space
-thread uint v935 = 0u;
-            ^
-program_source:940:13: error: program scope variable must reside in constant address space
-thread uint v936 = 0u;
-            ^
-program_source:941:13: error: program scope variable must reside in constant address space
-thread uint v937 = 0u;
-            ^
-program_source:942:13: error: program scope variable must reside in constant address space
-thread uint v938 = 0u;
-            ^
-program_source:943:13: error: program scope variable must reside in constant address space
-thread uint v939 = 0u;
-            ^
-program_source:944:13: error: program scope variable must reside in constant address space
-thread uint v940 = 0u;
-            ^
-program_source:945:13: error: program scope variable must reside in constant address space
-thread uint v941 = 0u;
-            ^
-program_source:946:13: error: program scope variable must reside in constant address space
-thread uint v942 = 0u;
-            ^
-program_source:947:13: error: program scope variable must reside in constant address space
-thread uint v943 = 0u;
-            ^
-program_source:948:13: error: program scope variable must reside in constant address space
-thread uint v944 = 0u;
-            ^
-program_source:949:13: error: program scope variable must reside in constant address space
-thread uint v945 = 0u;
-            ^
-program_source:950:13: error: program scope variable must reside in constant address space
-thread uint v946 = 0u;
-            ^
-program_source:951:13: error: program scope variable must reside in constant address space
-thread uint v947 = 0u;
-            ^
-program_source:952:13: error: program scope variable must reside in constant address space
-thread uint v948 = 0u;
-            ^
-program_source:953:13: error: program scope variable must reside in constant address space
-thread uint v949 = 0u;
-            ^
-program_source:954:13: error: program scope variable must reside in constant address space
-thread uint v950 = 0u;
-            ^
-program_source:955:13: error: program scope variable must reside in constant address space
-thread uint v951 = 0u;
-            ^
-program_source:956:13: error: program scope variable must reside in constant address space
-thread uint v952 = 0u;
-            ^
-program_source:957:13: error: program scope variable must reside in constant address space
-thread uint v953 = 0u;
-            ^
-program_source:958:13: error: program scope variable must reside in constant address space
-thread uint v954 = 0u;
-            ^
-program_source:959:13: error: program scope variable must reside in constant address space
-thread uint v955 = 0u;
-            ^
-program_source:960:13: error: program scope variable must reside in constant address space
-thread uint v956 = 0u;
-            ^
-program_source:961:13: error: program scope variable must reside in constant address space
-thread uint v957 = 0u;
-            ^
-program_source:962:13: error: program scope variable must reside in constant address space
-thread uint v958 = 0u;
-            ^
-program_source:963:13: error: program scope variable must reside in constant address space
-thread uint v959 = 0u;
-            ^
-program_source:964:13: error: program scope variable must reside in constant address space
-thread uint v960 = 0u;
-            ^
-program_source:965:13: error: program scope variable must reside in constant address space
-thread uint v961 = 0u;
-            ^
-program_source:966:13: error: program scope variable must reside in constant address space
-thread uint v962 = 0u;
-            ^
-program_source:967:13: error: program scope variable must reside in constant address space
-thread uint v963 = 0u;
-            ^
-program_source:968:13: error: program scope variable must reside in constant address space
-thread uint v964 = 0u;
-            ^
-program_source:969:13: error: program scope variable must reside in constant address space
-thread uint v965 = 0u;
-            ^
-program_source:970:13: error: program scope variable must reside in constant address space
-thread uint v966 = 0u;
-            ^
-program_source:971:13: error: program scope variable must reside in constant address space
-thread uint v967 = 0u;
-            ^
-program_source:972:13: error: program scope variable must reside in constant address space
-thread uint v968 = 0u;
-            ^
-program_source:973:13: error: program scope variable must reside in constant address space
-thread uint v969 = 0u;
-            ^
-program_source:974:13: error: program scope variable must reside in constant address space
-thread uint v970 = 0u;
-            ^
-program_source:975:13: error: program scope variable must reside in constant address space
-thread uint v971 = 0u;
-            ^
-program_source:976:13: error: program scope variable must reside in constant address space
-thread uint v972 = 0u;
-            ^
-program_source:977:13: error: program scope variable must reside in constant address space
-thread uint v973 = 0u;
-            ^
-program_source:978:13: error: program scope variable must reside in constant address space
-thread uint v974 = 0u;
-            ^
-program_source:979:13: error: program scope variable must reside in constant address space
-thread uint v975 = 0u;
-            ^
-program_source:980:13: error: program scope variable must reside in constant address space
-thread uint v976 = 0u;
-            ^
-program_source:981:13: error: program scope variable must reside in constant address space
-thread uint v977 = 0u;
-            ^
-program_source:982:13: error: program scope variable must reside in constant address space
-thread uint v978 = 0u;
-            ^
-program_source:983:13: error: program scope variable must reside in constant address space
-thread uint v979 = 0u;
-            ^
-program_source:984:13: error: program scope variable must reside in constant address space
-thread uint v980 = 0u;
-            ^
-program_source:985:13: error: program scope variable must reside in constant address space
-thread uint v981 = 0u;
-            ^
-program_source:986:13: error: program scope variable must reside in constant address space
-thread uint v982 = 0u;
-            ^
-program_source:987:13: error: program scope variable must reside in constant address space
-thread uint v983 = 0u;
-            ^
-program_source:988:13: error: program scope variable must reside in constant address space
-thread uint v984 = 0u;
-            ^
-program_source:989:13: error: program scope variable must reside in constant address space
-thread uint v985 = 0u;
-            ^
-program_source:990:13: error: program scope variable must reside in constant address space
-thread uint v986 = 0u;
-            ^
-program_source:991:13: error: program scope variable must reside in constant address space
-thread uint v987 = 0u;
-            ^
-program_source:992:13: error: program scope variable must reside in constant address space
-thread uint v988 = 0u;
-            ^
-program_source:993:13: error: program scope variable must reside in constant address space
-thread uint v989 = 0u;
-            ^
-program_source:994:13: error: program scope variable must reside in constant address space
-thread uint v990 = 0u;
-            ^
-program_source:995:13: error: program scope variable must reside in constant address space
-thread uint v991 = 0u;
-            ^
-program_source:996:13: error: program scope variable must reside in constant address space
-thread uint v992 = 0u;
-            ^
-program_source:997:13: error: program scope variable must reside in constant address space
-thread uint v993 = 0u;
-            ^
-program_source:998:13: error: program scope variable must reside in constant address space
-thread uint v994 = 0u;
-            ^
-program_source:999:13: error: program scope variable must reside in constant address space
-thread uint v995 = 0u;
-            ^
-program_source:1000:13: error: program scope variable must reside in constant address space
-thread uint v996 = 0u;
-            ^
-program_source:1001:13: error: program scope variable must reside in constant address space
-thread uint v997 = 0u;
-            ^
-program_source:1002:13: error: program scope variable must reside in constant address space
-thread uint v998 = 0u;
-            ^
-program_source:1003:13: error: program scope variable must reside in constant address space
-thread uint v999 = 0u;
-            ^
-
diff --git a/test/tint/bug/tint/1538.wgsl.expected.ir.msl b/test/tint/bug/tint/1538.wgsl.expected.ir.msl
index ffbff32..78cff54 100644
--- a/test/tint/bug/tint/1538.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1538.wgsl.expected.ir.msl
@@ -1,57 +1,44 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %buf:ptr<storage, array<u32, 1>, read_write> = var @binding_point(0, 1)
-}
+struct tint_module_vars_struct {
+  device tint_array<uint, 1>* buf;
+};
 
-%g = func():i32 {
-  $B2: {
-    ret 0i
-  }
+int g() {
+  return 0;
 }
-%f = func():i32 {
-  $B3: {
-    loop [b: $B4] {  # loop_1
-      $B4: {  # body
-        %4:i32 = call %g
-        exit_loop  # loop_1
-      }
+int f() {
+  {
+    while(true) {
+      g();
+      break;
     }
-    %5:i32 = call %g
-    %o:i32 = let %5
-    ret 0i
   }
+  int const o = g();
+  return 0;
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B5: {
-    loop [b: $B6, c: $B7] {  # loop_2
-      $B6: {  # body
-        %8:ptr<storage, u32, read_write> = access %buf, 0i
-        %9:u32 = load %8
-        %10:bool = eq %9, 0u
-        if %10 [t: $B8] {  # if_1
-          $B8: {  # true
-            exit_loop  # loop_2
-          }
-        }
-        %11:i32 = call %f
-        %s:ptr<function, i32, read_write> = var, %11
-        %13:ptr<storage, u32, read_write> = access %buf, 0i
-        store %13, 0u
-        continue  # -> $B7
+kernel void tint_symbol(device tint_array<uint, 1>* buf [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.buf=buf};
+  {
+    while(true) {
+      if (((*tint_module_vars.buf)[0] == 0u)) {
+        break;
       }
-      $B7: {  # continuing
-        next_iteration  # -> $B6
-      }
+      int s = f();
+      (*tint_module_vars.buf)[0] = 0u;
+      continue;
     }
-    ret
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index d403947..36b8b6b 100644
--- a/test/tint/bug/tint/1542.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1542.wgsl.expected.ir.msl
@@ -1,28 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct UniformBuffer {
+  int3 d;
+};
+struct tint_module_vars_struct {
+  const constant UniformBuffer* u_input;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: UniformBuffer = struct @align(16) {
-  d:vec3<i32> @offset(0)
+kernel void tint_symbol(const constant UniformBuffer* u_input [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u_input=u_input};
+  int3 const temp = ((*tint_module_vars.u_input).d << (uint3(0u) & uint3(31u)));
 }
-
-$B1: {  # root
-  %u_input:ptr<uniform, UniformBuffer, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %3:ptr<uniform, vec3<i32>, read> = access %u_input, 0u
-    %4:vec3<i32> = load %3
-    %5:vec3<u32> = and vec3<u32>(0u), vec3<u32>(31u)
-    %6:vec3<i32> = shl %4, %5
-    %temp:vec3<i32> = let %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/1557.wgsl.expected.ir.msl b/test/tint/bug/tint/1557.wgsl.expected.ir.msl
index 8598d3b..34026b7 100644
--- a/test/tint/bug/tint/1557.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1557.wgsl.expected.ir.msl
@@ -1,69 +1,46 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant int* u;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %u:ptr<uniform, i32, read> = var @binding_point(0, 0)
+int f() {
+  return 0;
 }
-
-%f = func():i32 {
-  $B2: {
-    ret 0i
-  }
-}
-%g = func():void {
-  $B3: {
-    %j:ptr<function, i32, read_write> = var, 0i
-    loop [b: $B4, c: $B5] {  # loop_1
-      $B4: {  # body
-        %5:i32 = load %j
-        %6:bool = gte %5, 1i
-        if %6 [t: $B6] {  # if_1
-          $B6: {  # 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
+void g() {
+  int j = 0;
+  {
+    while(true) {
+      if ((j >= 1)) {
+        break;
       }
-      $B5: {  # continuing
-        next_iteration  # -> $B4
-      }
+      j = (j + 1);
+      int k = f();
+      continue;
     }
-    ret
   }
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B7: {
-    %12:i32 = load %u
-    switch %12 [c: (0i, $B8), c: (default, $B9)] {  # switch_1
-      $B8: {  # case
-        %13:i32 = load %u
-        switch %13 [c: (0i, $B10), c: (default, $B11)] {  # switch_2
-          $B10: {  # case
-            exit_switch  # switch_2
-          }
-          $B11: {  # case
-            %14:void = call %g
-            exit_switch  # switch_2
-          }
+kernel void tint_symbol(const constant int* u [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.u=u};
+  switch((*tint_module_vars.u)) {
+    case 0:
+    {
+      switch((*tint_module_vars.u)) {
+        case 0:
+        {
+          break;
         }
-        exit_switch  # switch_1
+        default:
+        {
+          g();
+          break;
+        }
       }
-      $B9: {  # case
-        exit_switch  # switch_1
-      }
+      break;
     }
-    ret
+    default:
+    {
+      break;
+    }
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 51679e2..7f99c5f 100644
--- a/test/tint/bug/tint/1604.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1604.wgsl.expected.ir.msl
@@ -1,33 +1,24 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant int* x;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %x:ptr<uniform, i32, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %3:i32 = load %x
-    switch %3 [c: (0i, $B3), c: (default, $B4)] {  # switch_1
-      $B3: {  # case
-        loop [b: $B5] {  # loop_1
-          $B5: {  # body
-            ret
-          }
+kernel void tint_symbol(const constant int* x [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.x=x};
+  switch((*tint_module_vars.x)) {
+    case 0:
+    {
+      {
+        while(true) {
+          return;
         }
-        exit_switch  # switch_1
       }
-      $B4: {  # case
-        exit_switch  # switch_1
-      }
+      break;
     }
-    ret
+    default:
+    {
+      break;
+    }
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 5eee2e1..6120df1 100644
--- a/test/tint/bug/tint/1605.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1605.wgsl.expected.ir.msl
@@ -1,76 +1,34 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant int* b;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %b:ptr<uniform, i32, read> = var @binding_point(0, 0)
-}
-
-%func_3 = func():bool {
-  $B2: {
-    loop [i: $B3, b: $B4, c: $B5] {  # loop_1
-      $B3: {  # initializer
-        %i:ptr<function, i32, read_write> = var, 0i
-        next_iteration  # -> $B4
+bool func_3(tint_module_vars_struct tint_module_vars) {
+  {
+    int i = 0;
+    while(true) {
+      if ((i < (*tint_module_vars.b))) {
+      } else {
+        break;
       }
-      $B4: {  # body
-        %4:i32 = load %i
-        %5:i32 = load %b
-        %6:bool = lt %4, %5
-        if %6 [t: $B6, f: $B7] {  # if_1
-          $B6: {  # true
-            exit_if  # if_1
+      {
+        int j = -1;
+        while(true) {
+          if ((j == 1)) {
+          } else {
+            break;
           }
-          $B7: {  # false
-            exit_loop  # loop_1
-          }
+          return false;
         }
-        loop [i: $B8, b: $B9, c: $B10] {  # loop_2
-          $B8: {  # initializer
-            %j:ptr<function, i32, read_write> = var, -1i
-            next_iteration  # -> $B9
-          }
-          $B9: {  # body
-            %8:i32 = load %j
-            %9:bool = eq %8, 1i
-            if %9 [t: $B11, f: $B12] {  # if_2
-              $B11: {  # true
-                exit_if  # if_2
-              }
-              $B12: {  # false
-                exit_loop  # loop_2
-              }
-            }
-            ret false
-          }
-          $B10: {  # continuing
-            %10:i32 = load %j
-            %11:i32 = add %10, 1i
-            store %j, %11
-            next_iteration  # -> $B9
-          }
-        }
-        continue  # -> $B5
       }
-      $B5: {  # continuing
-        %12:i32 = load %i
-        %13:i32 = add %12, 1i
-        store %i, %13
-        next_iteration  # -> $B4
-      }
+      i = (i + 1);
+      continue;
     }
-    ret false
   }
+  return false;
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B13: {
-    %15:bool = call %func_3
-    ret
-  }
+kernel void tint_symbol(const constant int* b [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.b=b};
+  func_3(tint_module_vars);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 854c912..33fa57f 100644
--- a/test/tint/bug/tint/1666.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1666.wgsl.expected.ir.msl
@@ -1,57 +1,42 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %rarr:ptr<storage, array<f32>, read> = var @binding_point(0, 0)
-}
+struct tint_module_vars_struct {
+  const device tint_array<float, 1>* rarr;
+};
 
-%vector = func():void {
-  $B2: {
-    %idx:i32 = let 3i
-    %4:i32 = access vec2<i32>(1i, 2i), %idx
-    %x:i32 = let %4
-    ret
-  }
+void vector() {
+  int const idx = 3;
+  int const x = int2(1, 2)[idx];
 }
-%tint_symbol = func():void {
-  $B3: {
-    %idx_1:i32 = let 4i  # %idx_1: 'idx'
-    %8:vec2<f32> = access mat2x2<f32>(vec2<f32>(1.0f, 2.0f), vec2<f32>(3.0f, 4.0f)), %idx_1
-    %x_1:vec2<f32> = let %8  # %x_1: 'x'
-    ret
-  }
+void tint_symbol() {
+  int const idx = 4;
+  float2 const x = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f))[idx];
 }
-%fixed_size_array = func():void {
-  $B4: {
-    %arr:array<i32, 2> = let array<i32, 2>(1i, 2i)
-    %idx_2:i32 = let 3i  # %idx_2: 'idx'
-    %13:i32 = access %arr, %idx_2
-    %x_2:i32 = let %13  # %x_2: 'x'
-    ret
-  }
+void fixed_size_array() {
+  tint_array<int, 2> const arr = tint_array<int, 2>{1, 2};
+  int const idx = 3;
+  int const x = arr[idx];
 }
-%runtime_size_array = func():void {
-  $B5: {
-    %idx_3:i32 = let -1i  # %idx_3: 'idx'
-    %17:ptr<storage, f32, read> = access %rarr, %idx_3
-    %18:f32 = load %17
-    %x_3:f32 = let %18  # %x_3: 'x'
-    ret
-  }
+void runtime_size_array(tint_module_vars_struct tint_module_vars) {
+  int const idx = -1;
+  float const x = (*tint_module_vars.rarr)[idx];
 }
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B6: {
-    %21:void = call %vector
-    %22:void = call %tint_symbol
-    %23:void = call %fixed_size_array
-    %24:void = call %runtime_size_array
-    ret
-  }
+kernel void f(const device tint_array<float, 1>* rarr [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.rarr=rarr};
+  vector();
+  tint_symbol();
+  fixed_size_array();
+  runtime_size_array(tint_module_vars);
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 78e17ab..4b3e94e 100644
--- a/test/tint/bug/tint/1677.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1677.wgsl.expected.ir.msl
@@ -1,27 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct Input {
+  int3 position;
+};
+struct tint_module_vars_struct {
+  const device Input* input;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Input = struct @align(16) {
-  position:vec3<i32> @offset(0)
+kernel void tint_symbol(uint3 id [[thread_position_in_grid]], const device Input* input [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.input=input};
+  int3 const pos = ((*tint_module_vars.input).position - int3(0));
 }
-
-$B1: {  # 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: {
-    %4:ptr<storage, vec3<i32>, read> = access %input, 0u
-    %5:vec3<i32> = load %4
-    %6:vec3<i32> = sub %5, vec3<i32>(0i)
-    %pos:vec3<i32> = let %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/1735.wgsl.expected.ir.msl b/test/tint/bug/tint/1735.wgsl.expected.ir.msl
index d776463..d4c9822 100644
--- a/test/tint/bug/tint/1735.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1735.wgsl.expected.ir.msl
@@ -1,26 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float f;
+};
+struct tint_module_vars_struct {
+  const device S* in;
+  device S* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  f:f32 @offset(0)
+kernel void tint_symbol(const device S* in [[buffer(0)]], device S* out [[buffer(1)]]) {
+  tint_module_vars_struct const tint_module_vars = {.in=in, .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.in);
 }
-
-$B1: {  # 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: {
-    %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
index 7f0bf1c..374afda 100644
--- a/test/tint/bug/tint/1737.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1737.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,23 +12,12 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  threadgroup tint_array<float, 10>* a;
+  threadgroup tint_array<float, 20>* b;
+};
 
-threadgroup tint_array<float, 10> a;
-threadgroup tint_array<float, 20> b;
-void f() {
-  float const x = a[0];
-  float const y = b[0];
+void f(tint_module_vars_struct tint_module_vars) {
+  float const x = (*tint_module_vars.a)[0];
+  float const y = (*tint_module_vars.b)[0];
 }
-program_source:16:35: error: program scope variable must reside in constant address space
-threadgroup tint_array<float, 10> a;
-                                  ^
-program_source:17:35: error: program scope variable must reside in constant address space
-threadgroup tint_array<float, 20> b;
-                                  ^
-program_source:19:15: warning: unused variable 'x' [-Wunused-variable]
-  float const x = a[0];
-              ^
-program_source:20:15: warning: unused variable 'y' [-Wunused-variable]
-  float const y = b[0];
-              ^
-
diff --git a/test/tint/bug/tint/1776.spvasm.expected.ir.msl b/test/tint/bug/tint/1776.spvasm.expected.ir.msl
index 1c97029..bb7ca68 100644
--- a/test/tint/bug/tint/1776.spvasm.expected.ir.msl
+++ b/test/tint/bug/tint/1776.spvasm.expected.ir.msl
@@ -1,37 +1,32 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<f32> @offset(0)
-  b:i32 @offset(16)
-}
+struct S {
+  float4 a;
+  int b;
+};
+struct sb_block {
+  tint_array<S, 1> inner;
+};
+struct tint_module_vars_struct {
+  device sb_block* sb;
+};
 
-sb_block = struct @align(16) {
-  inner:array<S> @offset(0)
+void main_1(tint_module_vars_struct tint_module_vars) {
+  S const x_18 = (*tint_module_vars.sb).inner[1];
 }
-
-$B1: {  # root
-  %sb:ptr<storage, sb_block, read_write> = var @binding_point(0, 0)
+kernel void tint_symbol(device sb_block* sb [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.sb=sb};
+  main_1(tint_module_vars);
 }
-
-%main_1 = func():void {
-  $B2: {
-    %3:ptr<storage, S, read_write> = access %sb, 0u, 1i
-    %4:S = load %3
-    %x_18:S = let %4
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %7: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
index 684cd82..81cfe35 100644
--- a/test/tint/bug/tint/1776.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1776.wgsl.expected.ir.msl
@@ -1,27 +1,26 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<f32> @offset(0)
-  b:i32 @offset(16)
+struct S {
+  float4 a;
+  int b;
+};
+struct tint_module_vars_struct {
+  const device tint_array<S, 1>* sb;
+};
+
+kernel void tint_symbol(const device tint_array<S, 1>* sb [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.sb=sb};
+  S const x = (*tint_module_vars.sb)[1];
 }
-
-$B1: {  # root
-  %sb:ptr<storage, array<S>, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %3:ptr<storage, S, read> = access %sb, 1i
-    %4:S = load %3
-    %x:S = let %4
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 330d80a..a9c72ac 100644
--- a/test/tint/bug/tint/1820.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1820.wgsl.expected.ir.msl
@@ -1,9 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* global;
+};
 
-thread int global = 0;
+int tint_f32_to_i32(float value) {
+  return select(2147483647, select((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
+}
 void foo(float x) {
   switch(tint_f32_to_i32(x)) {
     default:
@@ -12,12 +15,12 @@
     }
   }
 }
-int baz(int x) {
-  global = 42;
+int baz(int x, tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.global) = 42;
   return x;
 }
-void bar(float x) {
-  switch(baz(tint_f32_to_i32(x))) {
+void bar(float x, tint_module_vars_struct tint_module_vars) {
+  switch(baz(tint_f32_to_i32(x), tint_module_vars)) {
     default:
     {
       break;
@@ -26,16 +29,3 @@
 }
 void tint_symbol() {
 }
-int tint_f32_to_i32(float value) {
-  return select(2147483647, select((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
-}
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int global = 0;
-           ^
-program_source:6:10: error: use of undeclared identifier 'tint_f32_to_i32'
-  switch(tint_f32_to_i32(x)) {
-         ^
-program_source:18:14: error: use of undeclared identifier 'tint_f32_to_i32'
-  switch(baz(tint_f32_to_i32(x))) {
-             ^
-
diff --git a/test/tint/bug/tint/1860.wgsl.expected.ir.msl b/test/tint/bug/tint/1860.wgsl.expected.ir.msl
index d6faf5c..050d7bb 100644
--- a/test/tint/bug/tint/1860.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1860.wgsl.expected.ir.msl
@@ -1,26 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct DeclaredAfterUsage {
+  float f;
+};
+struct tint_module_vars_struct {
+  const constant DeclaredAfterUsage* declared_after_usage;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: DeclaredAfterUsage = struct @align(4) {
-  f:f32 @offset(0)
+vertex float4 tint_symbol(const constant DeclaredAfterUsage* declared_after_usage [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.declared_after_usage=declared_after_usage};
+  return float4((*tint_module_vars.declared_after_usage).f);
 }
-
-$B1: {  # root
-  %declared_after_usage:ptr<uniform, DeclaredAfterUsage, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol = @vertex func():vec4<f32> [@position] {
-  $B2: {
-    %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
index 7e094a4..dcb4d6e 100644
--- a/test/tint/bug/tint/1875.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/1875.wgsl.expected.ir.msl
@@ -1,53 +1,39 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Outputs = struct @align(4) {
-  data:array<u32> @offset(0)
-}
+struct Outputs {
+  tint_array<uint, 1> data;
+};
+struct tint_module_vars_struct {
+  thread uint* count;
+  device Outputs* outputs;
+};
 
-$B1: {  # root
-  %count:ptr<private, u32, read_write> = var, 0u
-  %outputs:ptr<storage, Outputs, read_write> = var @binding_point(0, 1)
+void push_output(uint value, tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.outputs).data[(*tint_module_vars.count)] = value;
+  (*tint_module_vars.count) = ((*tint_module_vars.count) + 1u);
 }
-
-%push_output = func(%value:u32):void {
-  $B2: {
-    %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
-  }
+kernel void tint_symbol(device Outputs* outputs [[buffer(1)]]) {
+  thread uint count = 0u;
+  tint_module_vars_struct const tint_module_vars = {.count=(&count), .outputs=outputs};
+  uint a = 0u;
+  uint b = 10u;
+  uint c = 4294967294u;
+  a = (a + 1u);
+  b = (b + 1u);
+  c = (c + 1u);
+  push_output(a, tint_module_vars);
+  push_output(b, tint_module_vars);
+  push_output(c, tint_module_vars);
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %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/2029.wgsl.expected.ir.msl b/test/tint/bug/tint/2029.wgsl.expected.ir.msl
index 13ca518..c5abccc 100644
--- a/test/tint/bug/tint/2029.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2029.wgsl.expected.ir.msl
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int3* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, vec3<i32>, read_write> = var @binding_point(0, 0)
+kernel void tint_symbol(device int3* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  (*tint_module_vars.s) = int3(1);
 }
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    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
index 3d6a133..d6e1651 100644
--- a/test/tint/bug/tint/2038.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2038.wgsl.expected.ir.msl
@@ -1,33 +1,27 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %output:ptr<storage, array<u32, 2>, read_write> = var @binding_point(0, 0)
-}
+struct tint_module_vars_struct {
+  device tint_array<uint, 2>* output;
+};
 
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    if false [t: $B3] {  # if_1
-      $B3: {  # true
-        %3:ptr<storage, u32, read_write> = access %output, 0i
-        store %3, 1u
-        exit_if  # if_1
-      }
-    }
-    if false [t: $B4] {  # if_2
-      $B4: {  # true
-        %4:ptr<storage, u32, read_write> = access %output, 1i
-        store %4, 1u
-        exit_if  # if_2
-      }
-    }
-    ret
+kernel void tint_symbol(device tint_array<uint, 2>* output [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.output=output};
+  if (false) {
+    (*tint_module_vars.output)[0] = 1u;
+  }
+  if (false) {
+    (*tint_module_vars.output)[1] = 1u;
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
diff --git a/test/tint/bug/tint/2052.wgsl.expected.ir.msl b/test/tint/bug/tint/2052.wgsl.expected.ir.msl
index 2e04a91..68df997 100644
--- a/test/tint/bug/tint/2052.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2052.wgsl.expected.ir.msl
@@ -1,13 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* continue_execution;
+};
 
-thread bool continue_execution = true;
-void f() {
-  continue_execution = false;
+void f(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.continue_execution) = false;
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool continue_execution = true;
-            ^
-
diff --git a/test/tint/bug/tint/2069.wgsl.expected.ir.msl b/test/tint/bug/tint/2069.wgsl.expected.ir.msl
index a59c5ee..55df230 100644
--- a/test/tint/bug/tint/2069.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2069.wgsl.expected.ir.msl
@@ -4,7 +4,11 @@
   float fract;
   float whole;
 };
+struct tint_module_vars_struct {
+  thread modf_result_f32* v;
+};
 
 kernel void tint_symbol() {
   thread modf_result_f32 v = modf_result_f32{.fract=0.0f, .whole=1.0f};
+  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
 }
diff --git a/test/tint/bug/tint/2100.wgsl.expected.ir.msl b/test/tint/bug/tint/2100.wgsl.expected.ir.msl
index 9c390b3..7b04bc0 100644
--- a/test/tint/bug/tint/2100.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2100.wgsl.expected.ir.msl
@@ -1,28 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float4x4 matrix_view;
+  float3x3 matrix_normal;
+};
+struct tint_module_vars_struct {
+  const constant S* tint_symbol;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  matrix_view:mat4x4<f32> @offset(0)
-  matrix_normal:mat3x3<f32> @offset(64)
+vertex float4 tint_symbol_1(const constant S* tint_symbol [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.tint_symbol=tint_symbol};
+  float const x = (*tint_module_vars.tint_symbol).matrix_view[0][2u];
+  return float4(x, 0.0f, 0.0f, 1.0f);
 }
-
-$B1: {  # root
-  %tint_symbol:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol_1 = @vertex func():vec4<f32> [@position] {
-  $B2: {
-    %3:ptr<uniform, vec4<f32>, read> = access %tint_symbol, 0u, 0i
-    %4:f32 = load_vector_element %3, 2u
-    %x:f32 = let %4
-    %6:vec4<f32> = construct %x, 0.0f, 0.0f, 1.0f
-    ret %6
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by submitting a bug report at     *
-*  crbug.com/tint with the source program that triggered the bug.  *
-********************************************************************
diff --git a/test/tint/bug/tint/2121.wgsl.expected.ir.msl b/test/tint/bug/tint/2121.wgsl.expected.ir.msl
index 4604f10..97ccd81 100644
--- a/test/tint/bug/tint/2121.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2121.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct VSOut {
@@ -8,21 +6,10 @@
 
 void foo(thread VSOut* const out) {
   float4 pos = float4(1.0f, 2.0f, 3.0f, 4.0f);
-  out.pos = pos;
+  (*out).pos = pos;
 }
 vertex VSOut tint_symbol() {
   VSOut out = {};
-  foo(out);
+  foo((&out));
   return out;
 }
-program_source:9:6: error: member reference type 'VSOut *const' is a pointer; did you mean to use '->'?
-  out.pos = pos;
-  ~~~^
-     ->
-program_source:13:3: error: no matching function for call to 'foo'
-  foo(out);
-  ^~~
-program_source:7:6: note: candidate function not viable: no known conversion from 'VSOut' to 'VSOut *const' for 1st argument; take the address of the argument with &
-void foo(thread VSOut* const out) {
-     ^
-
diff --git a/test/tint/bug/tint/2146.wgsl.expected.ir.msl b/test/tint/bug/tint/2146.wgsl.expected.ir.msl
index 0adff61..4f81f14 100644
--- a/test/tint/bug/tint/2146.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2146.wgsl.expected.ir.msl
@@ -1,34 +1,18 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint3* localId;
+  thread uint* localIndex;
+  thread uint3* globalId;
+  thread uint3* numWorkgroups;
+  thread uint3* workgroupId;
+};
 
-thread uint3 localId = 0u;
-thread uint localIndex = 0u;
-thread uint3 globalId = 0u;
-thread uint3 numWorkgroups = 0u;
-thread uint3 workgroupId = 0u;
-uint globalId2Index() {
-  return globalId[0u];
+uint globalId2Index(tint_module_vars_struct tint_module_vars) {
+  return (*tint_module_vars.globalId)[0u];
 }
 kernel void tint_symbol() {
   half4 a = half4(0.0h);
   half const b = 1.0h;
   a[0] = (a[0] + b);
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint3 localId = 0u;
-             ^
-program_source:5:13: error: program scope variable must reside in constant address space
-thread uint localIndex = 0u;
-            ^
-program_source:6:14: error: program scope variable must reside in constant address space
-thread uint3 globalId = 0u;
-             ^
-program_source:7:14: error: program scope variable must reside in constant address space
-thread uint3 numWorkgroups = 0u;
-             ^
-program_source:8:14: error: program scope variable must reside in constant address space
-thread uint3 workgroupId = 0u;
-             ^
-
diff --git a/test/tint/bug/tint/2175.wgsl.expected.ir.msl b/test/tint/bug/tint/2175.wgsl.expected.ir.msl
index c2eec40..9fda4f9 100644
--- a/test/tint/bug/tint/2175.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2175.wgsl.expected.ir.msl
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device uint* tint_symbol_2;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %tint_symbol_2:ptr<storage, u32, read_write> = var @binding_point(0, 0)
+kernel void tint_symbol_3(device uint* tint_symbol_2 [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.tint_symbol_2=tint_symbol_2};
+  (*tint_module_vars.tint_symbol_2) = 0u;
 }
-
-%tint_symbol_3 = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    store %tint_symbol_2, 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/219.spvasm.expected.ir.msl b/test/tint/bug/tint/219.spvasm.expected.ir.msl
index a2c96a5..3e2ca1e 100644
--- a/test/tint/bug/tint/219.spvasm.expected.ir.msl
+++ b/test/tint/bug/tint/219.spvasm.expected.ir.msl
@@ -1,26 +1,14 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 float x_200(thread float2* const x_201) {
-  float const x_212 = x_201[0u];
+  float const x_212 = (*x_201)[0u];
   return x_212;
 }
 void main_1() {
   float2 x_11 = 0.0f;
-  float const x_12 = x_200(x_11);
+  float const x_12 = x_200((&x_11));
 }
 kernel void tint_symbol() {
   main_1();
 }
-program_source:5:15: error: cannot initialize a variable of type 'const float' with an lvalue of type 'float2' (vector of 2 'float' values)
-  float const x_212 = x_201[0u];
-              ^       ~~~~~~~~~
-program_source:10:22: error: no matching function for call to 'x_200'
-  float const x_12 = x_200(x_11);
-                     ^~~~~
-program_source:4:7: note: candidate function not viable: no known conversion from 'float2' (vector of 2 'float' values) to 'float2 *const' for 1st argument; take the address of the argument with &
-float x_200(thread float2* const x_201) {
-      ^
-
diff --git a/test/tint/bug/tint/221.wgsl.expected.ir.msl b/test/tint/bug/tint/221.wgsl.expected.ir.msl
index f430f2b..295f9e2 100644
--- a/test/tint/bug/tint/221.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/221.wgsl.expected.ir.msl
@@ -1,71 +1,47 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Buf = struct @align(4) {
-  count:u32 @offset(0)
-  data:array<u32, 50> @offset(4)
+struct Buf {
+  uint count;
+  tint_array<uint, 50> data;
+};
+struct tint_module_vars_struct {
+  device Buf* b;
+};
+
+uint tint_mod_u32(uint lhs, uint rhs) {
+  uint const v = select(rhs, 1u, (rhs == 0u));
+  return (lhs - ((lhs / v) * v));
 }
-
-$B1: {  # root
-  %b:ptr<storage, Buf, read_write> = var @binding_point(0, 0)
-}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %i:ptr<function, u32, read_write> = var, 0u
-    loop [b: $B3, c: $B4] {  # loop_1
-      $B3: {  # 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: {  # true
-            exit_loop  # loop_1
-          }
-        }
-        %8:u32 = load %i
-        %9:ptr<storage, u32, read_write> = access %b, 1u, %8
-        %p:ptr<storage, u32, read_write> = let %9
-        %11:u32 = load %i
-        %12:u32 = call %tint_mod_u32, %11, 2u
-        %14:bool = eq %12, 0u
-        if %14 [t: $B6] {  # if_2
-          $B6: {  # true
-            continue  # -> $B4
-          }
-        }
-        store %p, 0u
-        continue  # -> $B4
+kernel void tint_symbol(device Buf* b [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.b=b};
+  uint i = 0u;
+  {
+    while(true) {
+      if ((i >= (*tint_module_vars.b).count)) {
+        break;
       }
-      $B4: {  # continuing
-        %15:u32 = load %p
-        %16:u32 = mul %15, 2u
-        store %p, %16
-        %17:u32 = load %i
-        %18:u32 = add %17, 1u
-        store %i, %18
-        next_iteration  # -> $B3
+      device uint* const p = (&(*tint_module_vars.b).data[i]);
+      if ((tint_mod_u32(i, 2u) == 0u)) {
+        (*p) = ((*p) * 2u);
+        i = (i + 1u);
+        continue;
       }
+      (*p) = 0u;
+      (*p) = ((*p) * 2u);
+      i = (i + 1u);
+      continue;
     }
-    ret
   }
 }
-%tint_mod_u32 = func(%lhs:u32, %rhs:u32):u32 {
-  $B7: {
-    %21:bool = eq %rhs, 0u
-    %22:u32 = select %rhs, 1u, %21
-    %23:u32 = let %22
-    %24:u32 = div %lhs, %23
-    %25:u32 = mul %24, %23
-    %26:u32 = sub %lhs, %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/bug/tint/2237.wgsl.expected.ir.msl b/test/tint/bug/tint/2237.wgsl.expected.ir.msl
index bcc5b55..6e87f18 100644
--- a/test/tint/bug/tint/2237.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/2237.wgsl.expected.ir.msl
@@ -1,32 +1,26 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device uint* tint_symbol;
+};
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %tint_symbol:ptr<storage, u32, read_write> = var @binding_point(0, 0)
-}
 
-%foo = func():u32 {
-  $B2: {
-    %3:u32 = load %tint_symbol
-    %4:u32 = access array<u32, 4>(0u, 1u, 2u, 4u), %3
-    ret %4
-  }
+uint foo(tint_module_vars_struct tint_module_vars) {
+  return tint_array<uint, 4>{0u, 1u, 2u, 4u}[(*tint_module_vars.tint_symbol)];
 }
-%tint_symbol_1 = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:u32 = load %tint_symbol
-    %7:u32 = access array<u32, 4>(0u, 1u, 2u, 4u), %6
-    %v:u32 = let %7
-    %9:u32 = call %foo
-    %10:u32 = add %v, %9
-    store %tint_symbol, %10
-    ret
-  }
+kernel void tint_symbol_1(device uint* tint_symbol [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.tint_symbol=tint_symbol};
+  uint const v = tint_array<uint, 4>{0u, 1u, 2u, 4u}[(*tint_module_vars.tint_symbol)];
+  (*tint_module_vars.tint_symbol) = (v + foo(tint_module_vars));
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 9891160..182a41a 100644
--- a/test/tint/bug/tint/492.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/492.wgsl.expected.ir.msl
@@ -1,26 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+};
+struct tint_module_vars_struct {
+  device S* buf;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  a:i32 @offset(0)
+kernel void tint_symbol(device S* buf [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.buf=buf};
+  device int* const p = (&(*tint_module_vars.buf).a);
+  (*p) = 12;
 }
-
-$B1: {  # root
-  %buf:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %3:ptr<storage, i32, read_write> = access %buf, 0u
-    %p:ptr<storage, i32, read_write> = let %3
-    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/744.wgsl.expected.ir.msl b/test/tint/bug/tint/744.wgsl.expected.ir.msl
index 5989a20..bae927f 100644
--- a/test/tint/bug/tint/744.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/744.wgsl.expected.ir.msl
@@ -1,94 +1,52 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Matrix = struct @align(4) {
-  numbers:array<u32> @offset(0)
-}
+struct Matrix {
+  tint_array<uint, 1> numbers;
+};
+struct Uniforms {
+  uint2 aShape;
+  uint2 bShape;
+  uint2 outShape;
+};
+struct tint_module_vars_struct {
+  const device Matrix* firstMatrix;
+  const device Matrix* secondMatrix;
+  device Matrix* resultMatrix;
+  const constant Uniforms* uniforms;
+};
 
-Uniforms = struct @align(8) {
-  aShape:vec2<u32> @offset(0)
-  bShape:vec2<u32> @offset(8)
-  outShape:vec2<u32> @offset(16)
-}
-
-$B1: {  # 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: {
-    %7:u32 = access %global_id, 1u
-    %8:u32 = access %global_id, 0u
-    %9:vec2<u32> = construct %7, %8
-    %resultCell:vec2<u32> = let %9
-    %11:ptr<uniform, vec2<u32>, read> = access %uniforms, 0u
-    %12:u32 = load_vector_element %11, 1u
-    %dimInner:u32 = let %12
-    %14:ptr<uniform, vec2<u32>, read> = access %uniforms, 2u
-    %15:u32 = load_vector_element %14, 1u
-    %dimOutter:u32 = let %15
-    %result:ptr<function, u32, read_write> = var, 0u
-    loop [i: $B3, b: $B4, c: $B5] {  # loop_1
-      $B3: {  # initializer
-        %i:ptr<function, u32, read_write> = var, 0u
-        next_iteration  # -> $B4
+kernel void tint_symbol(uint3 global_id [[thread_position_in_grid]], const device Matrix* firstMatrix [[buffer(0)]], const device Matrix* secondMatrix [[buffer(1)]], device Matrix* resultMatrix [[buffer(2)]], const constant Uniforms* uniforms [[buffer(3)]]) {
+  tint_module_vars_struct const tint_module_vars = {.firstMatrix=firstMatrix, .secondMatrix=secondMatrix, .resultMatrix=resultMatrix, .uniforms=uniforms};
+  uint2 const resultCell = uint2(global_id[1u], global_id[0u]);
+  uint const dimInner = (*tint_module_vars.uniforms).aShape[1u];
+  uint const dimOutter = (*tint_module_vars.uniforms).outShape[1u];
+  uint result = 0u;
+  {
+    uint i = 0u;
+    while(true) {
+      if ((i < dimInner)) {
+      } else {
+        break;
       }
-      $B4: {  # body
-        %19:u32 = load %i
-        %20:bool = lt %19, %dimInner
-        if %20 [t: $B6, f: $B7] {  # if_1
-          $B6: {  # true
-            exit_if  # if_1
-          }
-          $B7: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        %21:u32 = load %i
-        %22:u32 = access %resultCell, 0u
-        %23:u32 = mul %22, %dimInner
-        %24:u32 = add %21, %23
-        %a:u32 = let %24
-        %26:u32 = access %resultCell, 1u
-        %27:u32 = load %i
-        %28:u32 = mul %27, %dimOutter
-        %29:u32 = add %26, %28
-        %b:u32 = let %29
-        %31:u32 = load %result
-        %32:ptr<storage, u32, read> = access %firstMatrix, 0u, %a
-        %33:u32 = load %32
-        %34:ptr<storage, u32, read> = access %secondMatrix, 0u, %b
-        %35:u32 = load %34
-        %36:u32 = mul %33, %35
-        %37:u32 = add %31, %36
-        store %result, %37
-        continue  # -> $B5
-      }
-      $B5: {  # continuing
-        %38:u32 = load %i
-        %39:u32 = add %38, 1u
-        store %i, %39
-        next_iteration  # -> $B4
-      }
+      uint const a = (i + (resultCell[0u] * dimInner));
+      uint const b = (resultCell[1u] + (i * dimOutter));
+      result = (result + ((*tint_module_vars.firstMatrix).numbers[a] * (*tint_module_vars.secondMatrix).numbers[b]));
+      i = (i + 1u);
+      continue;
     }
-    %40:u32 = access %resultCell, 1u
-    %41:u32 = access %resultCell, 0u
-    %42:u32 = mul %41, %dimOutter
-    %43:u32 = add %40, %42
-    %index:u32 = let %43
-    %45:ptr<storage, u32, read_write> = access %resultMatrix, 0u, %index
-    %46:u32 = load %result
-    store %45, %46
-    ret
   }
+  uint const index = (resultCell[1u] + (resultCell[0u] * dimOutter));
+  (*tint_module_vars.resultMatrix).numbers[index] = result;
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue 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
index 230f41d..5b030ea 100644
--- a/test/tint/bug/tint/870.spvasm.expected.ir.msl
+++ b/test/tint/bug/tint/870.spvasm.expected.ir.msl
@@ -1,58 +1,41 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 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)
-}
+struct sspp962805860buildInformationS {
+  float4 footprint;
+  float4 offset;
+  int essence;
+  tint_array<int, 6> orientation;
+};
+struct x_B4_BuildInformation {
+  sspp962805860buildInformationS passthru;
+};
+struct tint_module_vars_struct {
+  const device x_B4_BuildInformation* sspp962805860buildInformation;
+};
 
-x_B4_BuildInformation = struct @align(16) {
-  passthru:sspp962805860buildInformationS @offset(0)
+void main_1(tint_module_vars_struct tint_module_vars) {
+  tint_array<int, 6> orientation = {};
+  tint_array<int, 6> const x_23 = (*tint_module_vars.sspp962805860buildInformation).passthru.orientation;
+  orientation[0] = x_23[0u];
+  orientation[1] = x_23[1u];
+  orientation[2] = x_23[2u];
+  orientation[3] = x_23[3u];
+  orientation[4] = x_23[4u];
+  orientation[5] = x_23[5u];
 }
-
-$B1: {  # root
-  %sspp962805860buildInformation:ptr<storage, x_B4_BuildInformation, read> = var @binding_point(0, 2)
+fragment void tint_symbol(const device x_B4_BuildInformation* sspp962805860buildInformation [[buffer(2)]]) {
+  tint_module_vars_struct const tint_module_vars = {.sspp962805860buildInformation=sspp962805860buildInformation};
+  main_1(tint_module_vars);
 }
-
-%main_1 = func():void {
-  $B2: {
-    %orientation:ptr<function, array<i32, 6>, read_write> = var
-    %4:ptr<storage, array<i32, 6>, read> = access %sspp962805860buildInformation, 0u, 3u
-    %5:array<i32, 6> = load %4
-    %x_23:array<i32, 6> = let %5
-    %7:ptr<function, i32, read_write> = access %orientation, 0i
-    %8:i32 = access %x_23, 0u
-    store %7, %8
-    %9:ptr<function, i32, read_write> = access %orientation, 1i
-    %10:i32 = access %x_23, 1u
-    store %9, %10
-    %11:ptr<function, i32, read_write> = access %orientation, 2i
-    %12:i32 = access %x_23, 2u
-    store %11, %12
-    %13:ptr<function, i32, read_write> = access %orientation, 3i
-    %14:i32 = access %x_23, 3u
-    store %13, %14
-    %15:ptr<function, i32, read_write> = access %orientation, 4i
-    %16:i32 = access %x_23, 4u
-    store %15, %16
-    %17:ptr<function, i32, read_write> = access %orientation, 5i
-    %18:i32 = access %x_23, 5u
-    store %17, %18
-    ret
-  }
-}
-%tint_symbol = @fragment func():void {
-  $B3: {
-    %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/bug/tint/980.wgsl.expected.ir.msl b/test/tint/bug/tint/980.wgsl.expected.ir.msl
index 1ead1ce..cd2fbf9 100644
--- a/test/tint/bug/tint/980.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/980.wgsl.expected.ir.msl
@@ -1,43 +1,19 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float3 v;
+  uint i;
+};
+struct tint_module_vars_struct {
+  device S* io;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  v:vec3<f32> @offset(0)
-  i:u32 @offset(12)
+float3 Bad(uint index, float3 rd) {
+  float3 normal = float3(0.0f);
+  normal[index] = -(sign(rd[index]));
+  return normalize(normal);
 }
-
-$B1: {  # root
-  %io:ptr<storage, S, read_write> = var @binding_point(0, 0)
+kernel void tint_symbol(uint idx [[thread_index_in_threadgroup]], device S* io [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.io=io};
+  (*tint_module_vars.io).v = Bad((*tint_module_vars.io).i, (*tint_module_vars.io).v);
 }
-
-%Bad = func(%index:u32, %rd:vec3<f32>):vec3<f32> {
-  $B2: {
-    %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: {
-    %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
index 5c3a247..aa031c2 100644
--- a/test/tint/bug/tint/990.wgsl.expected.ir.msl
+++ b/test/tint/bug/tint/990.wgsl.expected.ir.msl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 void f() {
   int i = 0;
   {
-    thread int* const p = i;
+    thread int* const p = (&i);
     while(true) {
       if (false) {
       } else {
@@ -16,7 +14,3 @@
     }
   }
 }
-program_source:7:23: error: cannot initialize a variable of type 'int *const' with an lvalue of type 'int'
-    thread int* const p = i;
-                      ^   ~
-
diff --git a/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.ir.msl
index a1f0594..d3186cf 100644
--- a/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.ir.msl
+++ b/test/tint/builtins/workgroupUniformLoad/array.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,13 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  threadgroup tint_array<int, 4>* v;
+};
 
-threadgroup tint_array<int, 4> v;
-tint_array<int, 4> foo() {
+tint_array<int, 4> foo(tint_module_vars_struct tint_module_vars) {
   threadgroup_barrier(mem_flags::mem_threadgroup);
-  tint_array<int, 4> const v_1 = v;
+  tint_array<int, 4> const v_1 = (*tint_module_vars.v);
   threadgroup_barrier(mem_flags::mem_threadgroup);
   return v_1;
 }
-program_source:16:32: error: program scope variable must reside in constant address space
-threadgroup tint_array<int, 4> v;
-                               ^
-
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
index bdcbf5f..f17071a 100644
--- a/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.ir.msl
+++ b/test/tint/builtins/workgroupUniformLoad/array_overridable_count.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,13 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  threadgroup tint_array<int, 128>* v;
+};
 
-threadgroup tint_array<int, 128> v;
-int foo() {
+int foo(tint_module_vars_struct tint_module_vars) {
   threadgroup_barrier(mem_flags::mem_threadgroup);
-  tint_array<int, 128> const v_1 = v;
+  tint_array<int, 128> const v_1 = (*tint_module_vars.v);
   threadgroup_barrier(mem_flags::mem_threadgroup);
   return v_1[0];
 }
-program_source:16:34: error: program scope variable must reside in constant address space
-threadgroup tint_array<int, 128> v;
-                                 ^
-
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
index bdcbf5f..f17071a 100644
--- 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
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,13 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  threadgroup tint_array<int, 128>* v;
+};
 
-threadgroup tint_array<int, 128> v;
-int foo() {
+int foo(tint_module_vars_struct tint_module_vars) {
   threadgroup_barrier(mem_flags::mem_threadgroup);
-  tint_array<int, 128> const v_1 = v;
+  tint_array<int, 128> const v_1 = (*tint_module_vars.v);
   threadgroup_barrier(mem_flags::mem_threadgroup);
   return v_1[0];
 }
-program_source:16:34: error: program scope variable must reside in constant address space
-threadgroup tint_array<int, 128> v;
-                                 ^
-
diff --git a/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.ir.msl
index 18a3c5d..1f5702b 100644
--- a/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.ir.msl
+++ b/test/tint/builtins/workgroupUniformLoad/bool.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 
 bool foo(tint_module_vars_struct tint_module_vars) {
   threadgroup_barrier(mem_flags::mem_threadgroup);
-  bool const v_1 = tint_module_vars.v;
+  bool const v_1 = (*tint_module_vars.v);
   threadgroup_barrier(mem_flags::mem_threadgroup);
   return v_1;
 }
diff --git a/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.ir.msl
index 644f07b..d39052c 100644
--- a/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.ir.msl
+++ b/test/tint/builtins/workgroupUniformLoad/for_loop.wgsl.expected.ir.msl
@@ -1,34 +1,27 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  threadgroup int* a;
+  threadgroup int* b;
+};
 
-threadgroup int a;
-threadgroup int b;
-void foo() {
+void foo(tint_module_vars_struct tint_module_vars) {
   {
     int i = 0;
     while(true) {
       int const v = i;
       threadgroup_barrier(mem_flags::mem_threadgroup);
-      int const v_1 = a;
+      int const v_1 = (*tint_module_vars.a);
       threadgroup_barrier(mem_flags::mem_threadgroup);
       if ((v < v_1)) {
       } else {
         break;
       }
       threadgroup_barrier(mem_flags::mem_threadgroup);
-      int const v_2 = b;
+      int const v_2 = (*tint_module_vars.b);
       threadgroup_barrier(mem_flags::mem_threadgroup);
       i = (i + v_2);
       continue;
     }
   }
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-threadgroup int a;
-                ^
-program_source:5:17: error: program scope variable must reside in constant address space
-threadgroup int b;
-                ^
-
diff --git a/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.ir.msl
index 96fad06..c226646 100644
--- a/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.ir.msl
+++ b/test/tint/builtins/workgroupUniformLoad/if_condition.wgsl.expected.ir.msl
@@ -6,7 +6,7 @@
 
 int foo(tint_module_vars_struct tint_module_vars) {
   threadgroup_barrier(mem_flags::mem_threadgroup);
-  bool const v_1 = tint_module_vars.v;
+  bool const v_1 = (*tint_module_vars.v);
   threadgroup_barrier(mem_flags::mem_threadgroup);
   if (v_1) {
     return 42;
diff --git a/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.ir.msl
index a0c6ee9..97cb21c 100644
--- a/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.ir.msl
+++ b/test/tint/builtins/workgroupUniformLoad/matrix.wgsl.expected.ir.msl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  threadgroup float3x3* v;
+};
 
-threadgroup float3x3 v;
-float3x3 foo() {
+float3x3 foo(tint_module_vars_struct tint_module_vars) {
   threadgroup_barrier(mem_flags::mem_threadgroup);
-  float3x3 const v_1 = v;
+  float3x3 const v_1 = (*tint_module_vars.v);
   threadgroup_barrier(mem_flags::mem_threadgroup);
   return v_1;
 }
-program_source:4:22: error: program scope variable must reside in constant address space
-threadgroup float3x3 v;
-                     ^
-
diff --git a/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.ir.msl
index 4366a3a..cb6d218 100644
--- a/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.ir.msl
+++ b/test/tint/builtins/workgroupUniformLoad/structures.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -22,15 +20,13 @@
 struct Outer {
   tint_array<Inner, 4> a;
 };
+struct tint_module_vars_struct {
+  threadgroup Outer* v;
+};
 
-threadgroup Outer v;
-Outer foo() {
+Outer foo(tint_module_vars_struct tint_module_vars) {
   threadgroup_barrier(mem_flags::mem_threadgroup);
-  Outer const v_1 = v;
+  Outer const v_1 = (*tint_module_vars.v);
   threadgroup_barrier(mem_flags::mem_threadgroup);
   return v_1;
 }
-program_source:24:19: error: program scope variable must reside in constant address space
-threadgroup Outer v;
-                  ^
-
diff --git a/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.ir.msl
index f1ea9ea..8d06efa 100644
--- a/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.ir.msl
+++ b/test/tint/builtins/workgroupUniformLoad/vec.wgsl.expected.ir.msl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  threadgroup float4* v;
+};
 
-threadgroup float4 v;
-float4 foo() {
+float4 foo(tint_module_vars_struct tint_module_vars) {
   threadgroup_barrier(mem_flags::mem_threadgroup);
-  float4 const v_1 = v;
+  float4 const v_1 = (*tint_module_vars.v);
   threadgroup_barrier(mem_flags::mem_threadgroup);
   return v_1;
 }
-program_source:4:20: error: program scope variable must reside in constant address space
-threadgroup float4 v;
-                   ^
-
diff --git a/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.ir.msl b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.ir.msl
index 849f561..326a9f5 100644
--- a/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.ir.msl
+++ b/test/tint/builtins/workgroupUniformLoad/via_param.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,21 +12,16 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  threadgroup tint_array<int, 4>* v;
+};
 
-threadgroup tint_array<int, 4> v;
 int foo(threadgroup int* const p) {
   threadgroup_barrier(mem_flags::mem_threadgroup);
-  int const v_1 = p;
+  int const v_1 = (*p);
   threadgroup_barrier(mem_flags::mem_threadgroup);
   return v_1;
 }
-int bar() {
-  return foo(v[0]);
+int bar(tint_module_vars_struct tint_module_vars) {
+  return foo((&(*tint_module_vars.v)[0]));
 }
-program_source:16:32: error: program scope variable must reside in constant address space
-threadgroup tint_array<int, 4> v;
-                               ^
-program_source:19:13: error: cannot initialize a variable of type 'const int' with an lvalue of type 'threadgroup int *const'
-  int const v_1 = p;
-            ^     ~
-
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
index cc9d7eb..9fbd613 100644
--- 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
@@ -1,30 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  half3x2 tint_symbol;
+  half3 vector;
+};
+struct tint_module_vars_struct {
+  const constant S* data;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(8) {
-  tint_symbol:mat3x2<f16> @offset(0)
-  vector:vec3<f16> @offset(16)
+fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.data=data};
+  half2 const x = ((*tint_module_vars.data).tint_symbol * (*tint_module_vars.data).vector);
 }
-
-$B1: {  # root
-  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol_1 = @fragment func():void {
-  $B2: {
-    %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
-    %7:vec2<f16> = mul %4, %6
-    %x:vec2<f16> = let %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/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.ir.msl
index d076ee9..4ad47b1 100644
--- 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
@@ -1,30 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float3x2 tint_symbol;
+  float3 vector;
+};
+struct tint_module_vars_struct {
+  const constant S* data;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  tint_symbol:mat3x2<f32> @offset(0)
-  vector:vec3<f32> @offset(32)
+fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.data=data};
+  float2 const x = ((*tint_module_vars.data).tint_symbol * (*tint_module_vars.data).vector);
 }
-
-$B1: {  # root
-  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol_1 = @fragment func():void {
-  $B2: {
-    %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
-    %7:vec2<f32> = mul %4, %6
-    %x:vec2<f32> = let %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/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat3x3-vec3/f16.wgsl.expected.ir.msl
index 63113e5..e45d133 100644
--- 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
@@ -1,30 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  half3x3 tint_symbol;
+  half3 vector;
+};
+struct tint_module_vars_struct {
+  const constant S* data;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(8) {
-  tint_symbol:mat3x3<f16> @offset(0)
-  vector:vec3<f16> @offset(24)
+fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.data=data};
+  half3 const x = ((*tint_module_vars.data).tint_symbol * (*tint_module_vars.data).vector);
 }
-
-$B1: {  # root
-  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol_1 = @fragment func():void {
-  $B2: {
-    %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
-    %7:vec3<f16> = mul %4, %6
-    %x:vec3<f16> = let %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/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.ir.msl
index bfc5a7a..90da387 100644
--- 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
@@ -1,30 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float3x3 tint_symbol;
+  float3 vector;
+};
+struct tint_module_vars_struct {
+  const constant S* data;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  tint_symbol:mat3x3<f32> @offset(0)
-  vector:vec3<f32> @offset(48)
+fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.data=data};
+  float3 const x = ((*tint_module_vars.data).tint_symbol * (*tint_module_vars.data).vector);
 }
-
-$B1: {  # root
-  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol_1 = @fragment func():void {
-  $B2: {
-    %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
-    %7:vec3<f32> = mul %4, %6
-    %x:vec3<f32> = let %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/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-mat3x3/f16.wgsl.expected.ir.msl
index 860bcf5..daa1907 100644
--- 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
@@ -1,30 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  half3x3 tint_symbol;
+  half3 vector;
+};
+struct tint_module_vars_struct {
+  const constant S* data;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(8) {
-  tint_symbol:mat3x3<f16> @offset(0)
-  vector:vec3<f16> @offset(24)
+fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.data=data};
+  half3 const x = ((*tint_module_vars.data).vector * (*tint_module_vars.data).tint_symbol);
 }
-
-$B1: {  # root
-  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol_1 = @fragment func():void {
-  $B2: {
-    %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
-    %7:vec3<f16> = mul %4, %6
-    %x:vec3<f16> = let %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/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.ir.msl
index 7f4cc24..19163b7 100644
--- 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
@@ -1,30 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float3x3 tint_symbol;
+  float3 vector;
+};
+struct tint_module_vars_struct {
+  const constant S* data;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  tint_symbol:mat3x3<f32> @offset(0)
-  vector:vec3<f32> @offset(48)
+fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.data=data};
+  float3 const x = ((*tint_module_vars.data).vector * (*tint_module_vars.data).tint_symbol);
 }
-
-$B1: {  # root
-  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol_1 = @fragment func():void {
-  $B2: {
-    %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
-    %7:vec3<f32> = mul %4, %6
-    %x:vec3<f32> = let %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/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-mat4x3/f16.wgsl.expected.ir.msl
index 8af14af..cafdcab 100644
--- 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
@@ -1,30 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  half4x3 tint_symbol;
+  half3 vector;
+};
+struct tint_module_vars_struct {
+  const constant S* data;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(8) {
-  tint_symbol:mat4x3<f16> @offset(0)
-  vector:vec3<f16> @offset(32)
+fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.data=data};
+  half4 const x = ((*tint_module_vars.data).vector * (*tint_module_vars.data).tint_symbol);
 }
-
-$B1: {  # root
-  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol_1 = @fragment func():void {
-  $B2: {
-    %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
-    %7:vec4<f16> = mul %4, %6
-    %x:vec4<f16> = let %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/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.ir.msl
index 09ac2b9..3f298d1 100644
--- 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
@@ -1,30 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float4x3 tint_symbol;
+  float3 vector;
+};
+struct tint_module_vars_struct {
+  const constant S* data;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  tint_symbol:mat4x3<f32> @offset(0)
-  vector:vec3<f32> @offset(64)
+fragment void tint_symbol_1(const constant S* data [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.data=data};
+  float4 const x = ((*tint_module_vars.data).vector * (*tint_module_vars.data).tint_symbol);
 }
-
-$B1: {  # root
-  %data:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol_1 = @fragment func():void {
-  $B2: {
-    %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
-    %7:vec4<f32> = mul %4, %6
-    %x:vec4<f32> = let %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/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/swizzle/read/packed_vec3/f16.wgsl.expected.ir.msl
index 06e17d1..13b4385 100644
--- 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
@@ -1,503 +1,132 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  half3 v;
+};
+struct tint_module_vars_struct {
+  const constant S* U;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(8) {
-  v:vec3<f16> @offset(0)
+void f(tint_module_vars_struct tint_module_vars) {
+  half3 v = (*tint_module_vars.U).v;
+  half x = (*tint_module_vars.U).v[0u];
+  half y = (*tint_module_vars.U).v[1u];
+  half z = (*tint_module_vars.U).v[2u];
+  half2 xx = (*tint_module_vars.U).v.xx;
+  half2 xy = (*tint_module_vars.U).v.xy;
+  half2 xz = (*tint_module_vars.U).v.xz;
+  half2 yx = (*tint_module_vars.U).v.yx;
+  half2 yy = (*tint_module_vars.U).v.yy;
+  half2 yz = (*tint_module_vars.U).v.yz;
+  half2 zx = (*tint_module_vars.U).v.zx;
+  half2 zy = (*tint_module_vars.U).v.zy;
+  half2 zz = (*tint_module_vars.U).v.zz;
+  half3 xxx = (*tint_module_vars.U).v.xxx;
+  half3 xxy = (*tint_module_vars.U).v.xxy;
+  half3 xxz = (*tint_module_vars.U).v.xxz;
+  half3 xyx = (*tint_module_vars.U).v.xyx;
+  half3 xyy = (*tint_module_vars.U).v.xyy;
+  half3 xyz = (*tint_module_vars.U).v.xyz;
+  half3 xzx = (*tint_module_vars.U).v.xzx;
+  half3 xzy = (*tint_module_vars.U).v.xzy;
+  half3 xzz = (*tint_module_vars.U).v.xzz;
+  half3 yxx = (*tint_module_vars.U).v.yxx;
+  half3 yxy = (*tint_module_vars.U).v.yxy;
+  half3 yxz = (*tint_module_vars.U).v.yxz;
+  half3 yyx = (*tint_module_vars.U).v.yyx;
+  half3 yyy = (*tint_module_vars.U).v.yyy;
+  half3 yyz = (*tint_module_vars.U).v.yyz;
+  half3 yzx = (*tint_module_vars.U).v.yzx;
+  half3 yzy = (*tint_module_vars.U).v.yzy;
+  half3 yzz = (*tint_module_vars.U).v.yzz;
+  half3 zxx = (*tint_module_vars.U).v.zxx;
+  half3 zxy = (*tint_module_vars.U).v.zxy;
+  half3 zxz = (*tint_module_vars.U).v.zxz;
+  half3 zyx = (*tint_module_vars.U).v.zyx;
+  half3 zyy = (*tint_module_vars.U).v.zyy;
+  half3 zyz = (*tint_module_vars.U).v.zyz;
+  half3 zzx = (*tint_module_vars.U).v.zzx;
+  half3 zzy = (*tint_module_vars.U).v.zzy;
+  half3 zzz = (*tint_module_vars.U).v.zzz;
+  half4 xxxx = (*tint_module_vars.U).v.xxxx;
+  half4 xxxy = (*tint_module_vars.U).v.xxxy;
+  half4 xxxz = (*tint_module_vars.U).v.xxxz;
+  half4 xxyx = (*tint_module_vars.U).v.xxyx;
+  half4 xxyy = (*tint_module_vars.U).v.xxyy;
+  half4 xxyz = (*tint_module_vars.U).v.xxyz;
+  half4 xxzx = (*tint_module_vars.U).v.xxzx;
+  half4 xxzy = (*tint_module_vars.U).v.xxzy;
+  half4 xxzz = (*tint_module_vars.U).v.xxzz;
+  half4 xyxx = (*tint_module_vars.U).v.xyxx;
+  half4 xyxy = (*tint_module_vars.U).v.xyxy;
+  half4 xyxz = (*tint_module_vars.U).v.xyxz;
+  half4 xyyx = (*tint_module_vars.U).v.xyyx;
+  half4 xyyy = (*tint_module_vars.U).v.xyyy;
+  half4 xyyz = (*tint_module_vars.U).v.xyyz;
+  half4 xyzx = (*tint_module_vars.U).v.xyzx;
+  half4 xyzy = (*tint_module_vars.U).v.xyzy;
+  half4 xyzz = (*tint_module_vars.U).v.xyzz;
+  half4 xzxx = (*tint_module_vars.U).v.xzxx;
+  half4 xzxy = (*tint_module_vars.U).v.xzxy;
+  half4 xzxz = (*tint_module_vars.U).v.xzxz;
+  half4 xzyx = (*tint_module_vars.U).v.xzyx;
+  half4 xzyy = (*tint_module_vars.U).v.xzyy;
+  half4 xzyz = (*tint_module_vars.U).v.xzyz;
+  half4 xzzx = (*tint_module_vars.U).v.xzzx;
+  half4 xzzy = (*tint_module_vars.U).v.xzzy;
+  half4 xzzz = (*tint_module_vars.U).v.xzzz;
+  half4 yxxx = (*tint_module_vars.U).v.yxxx;
+  half4 yxxy = (*tint_module_vars.U).v.yxxy;
+  half4 yxxz = (*tint_module_vars.U).v.yxxz;
+  half4 yxyx = (*tint_module_vars.U).v.yxyx;
+  half4 yxyy = (*tint_module_vars.U).v.yxyy;
+  half4 yxyz = (*tint_module_vars.U).v.yxyz;
+  half4 yxzx = (*tint_module_vars.U).v.yxzx;
+  half4 yxzy = (*tint_module_vars.U).v.yxzy;
+  half4 yxzz = (*tint_module_vars.U).v.yxzz;
+  half4 yyxx = (*tint_module_vars.U).v.yyxx;
+  half4 yyxy = (*tint_module_vars.U).v.yyxy;
+  half4 yyxz = (*tint_module_vars.U).v.yyxz;
+  half4 yyyx = (*tint_module_vars.U).v.yyyx;
+  half4 yyyy = (*tint_module_vars.U).v.yyyy;
+  half4 yyyz = (*tint_module_vars.U).v.yyyz;
+  half4 yyzx = (*tint_module_vars.U).v.yyzx;
+  half4 yyzy = (*tint_module_vars.U).v.yyzy;
+  half4 yyzz = (*tint_module_vars.U).v.yyzz;
+  half4 yzxx = (*tint_module_vars.U).v.yzxx;
+  half4 yzxy = (*tint_module_vars.U).v.yzxy;
+  half4 yzxz = (*tint_module_vars.U).v.yzxz;
+  half4 yzyx = (*tint_module_vars.U).v.yzyx;
+  half4 yzyy = (*tint_module_vars.U).v.yzyy;
+  half4 yzyz = (*tint_module_vars.U).v.yzyz;
+  half4 yzzx = (*tint_module_vars.U).v.yzzx;
+  half4 yzzy = (*tint_module_vars.U).v.yzzy;
+  half4 yzzz = (*tint_module_vars.U).v.yzzz;
+  half4 zxxx = (*tint_module_vars.U).v.zxxx;
+  half4 zxxy = (*tint_module_vars.U).v.zxxy;
+  half4 zxxz = (*tint_module_vars.U).v.zxxz;
+  half4 zxyx = (*tint_module_vars.U).v.zxyx;
+  half4 zxyy = (*tint_module_vars.U).v.zxyy;
+  half4 zxyz = (*tint_module_vars.U).v.zxyz;
+  half4 zxzx = (*tint_module_vars.U).v.zxzx;
+  half4 zxzy = (*tint_module_vars.U).v.zxzy;
+  half4 zxzz = (*tint_module_vars.U).v.zxzz;
+  half4 zyxx = (*tint_module_vars.U).v.zyxx;
+  half4 zyxy = (*tint_module_vars.U).v.zyxy;
+  half4 zyxz = (*tint_module_vars.U).v.zyxz;
+  half4 zyyx = (*tint_module_vars.U).v.zyyx;
+  half4 zyyy = (*tint_module_vars.U).v.zyyy;
+  half4 zyyz = (*tint_module_vars.U).v.zyyz;
+  half4 zyzx = (*tint_module_vars.U).v.zyzx;
+  half4 zyzy = (*tint_module_vars.U).v.zyzy;
+  half4 zyzz = (*tint_module_vars.U).v.zyzz;
+  half4 zzxx = (*tint_module_vars.U).v.zzxx;
+  half4 zzxy = (*tint_module_vars.U).v.zzxy;
+  half4 zzxz = (*tint_module_vars.U).v.zzxz;
+  half4 zzyx = (*tint_module_vars.U).v.zzyx;
+  half4 zzyy = (*tint_module_vars.U).v.zzyy;
+  half4 zzyz = (*tint_module_vars.U).v.zzyz;
+  half4 zzzx = (*tint_module_vars.U).v.zzzx;
+  half4 zzzy = (*tint_module_vars.U).v.zzzy;
+  half4 zzzz = (*tint_module_vars.U).v.zzzz;
 }
-
-$B1: {  # root
-  %U:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%f = func():void {
-  $B2: {
-    %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
index b5bdd28..805cc3c 100644
--- 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
@@ -1,503 +1,132 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float3 v;
+};
+struct tint_module_vars_struct {
+  const constant S* U;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  v:vec3<f32> @offset(0)
+void f(tint_module_vars_struct tint_module_vars) {
+  float3 v = (*tint_module_vars.U).v;
+  float x = (*tint_module_vars.U).v[0u];
+  float y = (*tint_module_vars.U).v[1u];
+  float z = (*tint_module_vars.U).v[2u];
+  float2 xx = (*tint_module_vars.U).v.xx;
+  float2 xy = (*tint_module_vars.U).v.xy;
+  float2 xz = (*tint_module_vars.U).v.xz;
+  float2 yx = (*tint_module_vars.U).v.yx;
+  float2 yy = (*tint_module_vars.U).v.yy;
+  float2 yz = (*tint_module_vars.U).v.yz;
+  float2 zx = (*tint_module_vars.U).v.zx;
+  float2 zy = (*tint_module_vars.U).v.zy;
+  float2 zz = (*tint_module_vars.U).v.zz;
+  float3 xxx = (*tint_module_vars.U).v.xxx;
+  float3 xxy = (*tint_module_vars.U).v.xxy;
+  float3 xxz = (*tint_module_vars.U).v.xxz;
+  float3 xyx = (*tint_module_vars.U).v.xyx;
+  float3 xyy = (*tint_module_vars.U).v.xyy;
+  float3 xyz = (*tint_module_vars.U).v.xyz;
+  float3 xzx = (*tint_module_vars.U).v.xzx;
+  float3 xzy = (*tint_module_vars.U).v.xzy;
+  float3 xzz = (*tint_module_vars.U).v.xzz;
+  float3 yxx = (*tint_module_vars.U).v.yxx;
+  float3 yxy = (*tint_module_vars.U).v.yxy;
+  float3 yxz = (*tint_module_vars.U).v.yxz;
+  float3 yyx = (*tint_module_vars.U).v.yyx;
+  float3 yyy = (*tint_module_vars.U).v.yyy;
+  float3 yyz = (*tint_module_vars.U).v.yyz;
+  float3 yzx = (*tint_module_vars.U).v.yzx;
+  float3 yzy = (*tint_module_vars.U).v.yzy;
+  float3 yzz = (*tint_module_vars.U).v.yzz;
+  float3 zxx = (*tint_module_vars.U).v.zxx;
+  float3 zxy = (*tint_module_vars.U).v.zxy;
+  float3 zxz = (*tint_module_vars.U).v.zxz;
+  float3 zyx = (*tint_module_vars.U).v.zyx;
+  float3 zyy = (*tint_module_vars.U).v.zyy;
+  float3 zyz = (*tint_module_vars.U).v.zyz;
+  float3 zzx = (*tint_module_vars.U).v.zzx;
+  float3 zzy = (*tint_module_vars.U).v.zzy;
+  float3 zzz = (*tint_module_vars.U).v.zzz;
+  float4 xxxx = (*tint_module_vars.U).v.xxxx;
+  float4 xxxy = (*tint_module_vars.U).v.xxxy;
+  float4 xxxz = (*tint_module_vars.U).v.xxxz;
+  float4 xxyx = (*tint_module_vars.U).v.xxyx;
+  float4 xxyy = (*tint_module_vars.U).v.xxyy;
+  float4 xxyz = (*tint_module_vars.U).v.xxyz;
+  float4 xxzx = (*tint_module_vars.U).v.xxzx;
+  float4 xxzy = (*tint_module_vars.U).v.xxzy;
+  float4 xxzz = (*tint_module_vars.U).v.xxzz;
+  float4 xyxx = (*tint_module_vars.U).v.xyxx;
+  float4 xyxy = (*tint_module_vars.U).v.xyxy;
+  float4 xyxz = (*tint_module_vars.U).v.xyxz;
+  float4 xyyx = (*tint_module_vars.U).v.xyyx;
+  float4 xyyy = (*tint_module_vars.U).v.xyyy;
+  float4 xyyz = (*tint_module_vars.U).v.xyyz;
+  float4 xyzx = (*tint_module_vars.U).v.xyzx;
+  float4 xyzy = (*tint_module_vars.U).v.xyzy;
+  float4 xyzz = (*tint_module_vars.U).v.xyzz;
+  float4 xzxx = (*tint_module_vars.U).v.xzxx;
+  float4 xzxy = (*tint_module_vars.U).v.xzxy;
+  float4 xzxz = (*tint_module_vars.U).v.xzxz;
+  float4 xzyx = (*tint_module_vars.U).v.xzyx;
+  float4 xzyy = (*tint_module_vars.U).v.xzyy;
+  float4 xzyz = (*tint_module_vars.U).v.xzyz;
+  float4 xzzx = (*tint_module_vars.U).v.xzzx;
+  float4 xzzy = (*tint_module_vars.U).v.xzzy;
+  float4 xzzz = (*tint_module_vars.U).v.xzzz;
+  float4 yxxx = (*tint_module_vars.U).v.yxxx;
+  float4 yxxy = (*tint_module_vars.U).v.yxxy;
+  float4 yxxz = (*tint_module_vars.U).v.yxxz;
+  float4 yxyx = (*tint_module_vars.U).v.yxyx;
+  float4 yxyy = (*tint_module_vars.U).v.yxyy;
+  float4 yxyz = (*tint_module_vars.U).v.yxyz;
+  float4 yxzx = (*tint_module_vars.U).v.yxzx;
+  float4 yxzy = (*tint_module_vars.U).v.yxzy;
+  float4 yxzz = (*tint_module_vars.U).v.yxzz;
+  float4 yyxx = (*tint_module_vars.U).v.yyxx;
+  float4 yyxy = (*tint_module_vars.U).v.yyxy;
+  float4 yyxz = (*tint_module_vars.U).v.yyxz;
+  float4 yyyx = (*tint_module_vars.U).v.yyyx;
+  float4 yyyy = (*tint_module_vars.U).v.yyyy;
+  float4 yyyz = (*tint_module_vars.U).v.yyyz;
+  float4 yyzx = (*tint_module_vars.U).v.yyzx;
+  float4 yyzy = (*tint_module_vars.U).v.yyzy;
+  float4 yyzz = (*tint_module_vars.U).v.yyzz;
+  float4 yzxx = (*tint_module_vars.U).v.yzxx;
+  float4 yzxy = (*tint_module_vars.U).v.yzxy;
+  float4 yzxz = (*tint_module_vars.U).v.yzxz;
+  float4 yzyx = (*tint_module_vars.U).v.yzyx;
+  float4 yzyy = (*tint_module_vars.U).v.yzyy;
+  float4 yzyz = (*tint_module_vars.U).v.yzyz;
+  float4 yzzx = (*tint_module_vars.U).v.yzzx;
+  float4 yzzy = (*tint_module_vars.U).v.yzzy;
+  float4 yzzz = (*tint_module_vars.U).v.yzzz;
+  float4 zxxx = (*tint_module_vars.U).v.zxxx;
+  float4 zxxy = (*tint_module_vars.U).v.zxxy;
+  float4 zxxz = (*tint_module_vars.U).v.zxxz;
+  float4 zxyx = (*tint_module_vars.U).v.zxyx;
+  float4 zxyy = (*tint_module_vars.U).v.zxyy;
+  float4 zxyz = (*tint_module_vars.U).v.zxyz;
+  float4 zxzx = (*tint_module_vars.U).v.zxzx;
+  float4 zxzy = (*tint_module_vars.U).v.zxzy;
+  float4 zxzz = (*tint_module_vars.U).v.zxzz;
+  float4 zyxx = (*tint_module_vars.U).v.zyxx;
+  float4 zyxy = (*tint_module_vars.U).v.zyxy;
+  float4 zyxz = (*tint_module_vars.U).v.zyxz;
+  float4 zyyx = (*tint_module_vars.U).v.zyyx;
+  float4 zyyy = (*tint_module_vars.U).v.zyyy;
+  float4 zyyz = (*tint_module_vars.U).v.zyyz;
+  float4 zyzx = (*tint_module_vars.U).v.zyzx;
+  float4 zyzy = (*tint_module_vars.U).v.zyzy;
+  float4 zyzz = (*tint_module_vars.U).v.zyzz;
+  float4 zzxx = (*tint_module_vars.U).v.zzxx;
+  float4 zzxy = (*tint_module_vars.U).v.zzxy;
+  float4 zzxz = (*tint_module_vars.U).v.zzxz;
+  float4 zzyx = (*tint_module_vars.U).v.zzyx;
+  float4 zzyy = (*tint_module_vars.U).v.zzyy;
+  float4 zzyz = (*tint_module_vars.U).v.zzyz;
+  float4 zzzx = (*tint_module_vars.U).v.zzzx;
+  float4 zzzy = (*tint_module_vars.U).v.zzzy;
+  float4 zzzz = (*tint_module_vars.U).v.zzzz;
 }
-
-$B1: {  # root
-  %U:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%f = func():void {
-  $B2: {
-    %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
index 37e6cd7..4bf3efe 100644
--- 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
@@ -1,503 +1,132 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int3 v;
+};
+struct tint_module_vars_struct {
+  const constant S* U;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  v:vec3<i32> @offset(0)
+void f(tint_module_vars_struct tint_module_vars) {
+  int3 v = (*tint_module_vars.U).v;
+  int x = (*tint_module_vars.U).v[0u];
+  int y = (*tint_module_vars.U).v[1u];
+  int z = (*tint_module_vars.U).v[2u];
+  int2 xx = (*tint_module_vars.U).v.xx;
+  int2 xy = (*tint_module_vars.U).v.xy;
+  int2 xz = (*tint_module_vars.U).v.xz;
+  int2 yx = (*tint_module_vars.U).v.yx;
+  int2 yy = (*tint_module_vars.U).v.yy;
+  int2 yz = (*tint_module_vars.U).v.yz;
+  int2 zx = (*tint_module_vars.U).v.zx;
+  int2 zy = (*tint_module_vars.U).v.zy;
+  int2 zz = (*tint_module_vars.U).v.zz;
+  int3 xxx = (*tint_module_vars.U).v.xxx;
+  int3 xxy = (*tint_module_vars.U).v.xxy;
+  int3 xxz = (*tint_module_vars.U).v.xxz;
+  int3 xyx = (*tint_module_vars.U).v.xyx;
+  int3 xyy = (*tint_module_vars.U).v.xyy;
+  int3 xyz = (*tint_module_vars.U).v.xyz;
+  int3 xzx = (*tint_module_vars.U).v.xzx;
+  int3 xzy = (*tint_module_vars.U).v.xzy;
+  int3 xzz = (*tint_module_vars.U).v.xzz;
+  int3 yxx = (*tint_module_vars.U).v.yxx;
+  int3 yxy = (*tint_module_vars.U).v.yxy;
+  int3 yxz = (*tint_module_vars.U).v.yxz;
+  int3 yyx = (*tint_module_vars.U).v.yyx;
+  int3 yyy = (*tint_module_vars.U).v.yyy;
+  int3 yyz = (*tint_module_vars.U).v.yyz;
+  int3 yzx = (*tint_module_vars.U).v.yzx;
+  int3 yzy = (*tint_module_vars.U).v.yzy;
+  int3 yzz = (*tint_module_vars.U).v.yzz;
+  int3 zxx = (*tint_module_vars.U).v.zxx;
+  int3 zxy = (*tint_module_vars.U).v.zxy;
+  int3 zxz = (*tint_module_vars.U).v.zxz;
+  int3 zyx = (*tint_module_vars.U).v.zyx;
+  int3 zyy = (*tint_module_vars.U).v.zyy;
+  int3 zyz = (*tint_module_vars.U).v.zyz;
+  int3 zzx = (*tint_module_vars.U).v.zzx;
+  int3 zzy = (*tint_module_vars.U).v.zzy;
+  int3 zzz = (*tint_module_vars.U).v.zzz;
+  int4 xxxx = (*tint_module_vars.U).v.xxxx;
+  int4 xxxy = (*tint_module_vars.U).v.xxxy;
+  int4 xxxz = (*tint_module_vars.U).v.xxxz;
+  int4 xxyx = (*tint_module_vars.U).v.xxyx;
+  int4 xxyy = (*tint_module_vars.U).v.xxyy;
+  int4 xxyz = (*tint_module_vars.U).v.xxyz;
+  int4 xxzx = (*tint_module_vars.U).v.xxzx;
+  int4 xxzy = (*tint_module_vars.U).v.xxzy;
+  int4 xxzz = (*tint_module_vars.U).v.xxzz;
+  int4 xyxx = (*tint_module_vars.U).v.xyxx;
+  int4 xyxy = (*tint_module_vars.U).v.xyxy;
+  int4 xyxz = (*tint_module_vars.U).v.xyxz;
+  int4 xyyx = (*tint_module_vars.U).v.xyyx;
+  int4 xyyy = (*tint_module_vars.U).v.xyyy;
+  int4 xyyz = (*tint_module_vars.U).v.xyyz;
+  int4 xyzx = (*tint_module_vars.U).v.xyzx;
+  int4 xyzy = (*tint_module_vars.U).v.xyzy;
+  int4 xyzz = (*tint_module_vars.U).v.xyzz;
+  int4 xzxx = (*tint_module_vars.U).v.xzxx;
+  int4 xzxy = (*tint_module_vars.U).v.xzxy;
+  int4 xzxz = (*tint_module_vars.U).v.xzxz;
+  int4 xzyx = (*tint_module_vars.U).v.xzyx;
+  int4 xzyy = (*tint_module_vars.U).v.xzyy;
+  int4 xzyz = (*tint_module_vars.U).v.xzyz;
+  int4 xzzx = (*tint_module_vars.U).v.xzzx;
+  int4 xzzy = (*tint_module_vars.U).v.xzzy;
+  int4 xzzz = (*tint_module_vars.U).v.xzzz;
+  int4 yxxx = (*tint_module_vars.U).v.yxxx;
+  int4 yxxy = (*tint_module_vars.U).v.yxxy;
+  int4 yxxz = (*tint_module_vars.U).v.yxxz;
+  int4 yxyx = (*tint_module_vars.U).v.yxyx;
+  int4 yxyy = (*tint_module_vars.U).v.yxyy;
+  int4 yxyz = (*tint_module_vars.U).v.yxyz;
+  int4 yxzx = (*tint_module_vars.U).v.yxzx;
+  int4 yxzy = (*tint_module_vars.U).v.yxzy;
+  int4 yxzz = (*tint_module_vars.U).v.yxzz;
+  int4 yyxx = (*tint_module_vars.U).v.yyxx;
+  int4 yyxy = (*tint_module_vars.U).v.yyxy;
+  int4 yyxz = (*tint_module_vars.U).v.yyxz;
+  int4 yyyx = (*tint_module_vars.U).v.yyyx;
+  int4 yyyy = (*tint_module_vars.U).v.yyyy;
+  int4 yyyz = (*tint_module_vars.U).v.yyyz;
+  int4 yyzx = (*tint_module_vars.U).v.yyzx;
+  int4 yyzy = (*tint_module_vars.U).v.yyzy;
+  int4 yyzz = (*tint_module_vars.U).v.yyzz;
+  int4 yzxx = (*tint_module_vars.U).v.yzxx;
+  int4 yzxy = (*tint_module_vars.U).v.yzxy;
+  int4 yzxz = (*tint_module_vars.U).v.yzxz;
+  int4 yzyx = (*tint_module_vars.U).v.yzyx;
+  int4 yzyy = (*tint_module_vars.U).v.yzyy;
+  int4 yzyz = (*tint_module_vars.U).v.yzyz;
+  int4 yzzx = (*tint_module_vars.U).v.yzzx;
+  int4 yzzy = (*tint_module_vars.U).v.yzzy;
+  int4 yzzz = (*tint_module_vars.U).v.yzzz;
+  int4 zxxx = (*tint_module_vars.U).v.zxxx;
+  int4 zxxy = (*tint_module_vars.U).v.zxxy;
+  int4 zxxz = (*tint_module_vars.U).v.zxxz;
+  int4 zxyx = (*tint_module_vars.U).v.zxyx;
+  int4 zxyy = (*tint_module_vars.U).v.zxyy;
+  int4 zxyz = (*tint_module_vars.U).v.zxyz;
+  int4 zxzx = (*tint_module_vars.U).v.zxzx;
+  int4 zxzy = (*tint_module_vars.U).v.zxzy;
+  int4 zxzz = (*tint_module_vars.U).v.zxzz;
+  int4 zyxx = (*tint_module_vars.U).v.zyxx;
+  int4 zyxy = (*tint_module_vars.U).v.zyxy;
+  int4 zyxz = (*tint_module_vars.U).v.zyxz;
+  int4 zyyx = (*tint_module_vars.U).v.zyyx;
+  int4 zyyy = (*tint_module_vars.U).v.zyyy;
+  int4 zyyz = (*tint_module_vars.U).v.zyyz;
+  int4 zyzx = (*tint_module_vars.U).v.zyzx;
+  int4 zyzy = (*tint_module_vars.U).v.zyzy;
+  int4 zyzz = (*tint_module_vars.U).v.zyzz;
+  int4 zzxx = (*tint_module_vars.U).v.zzxx;
+  int4 zzxy = (*tint_module_vars.U).v.zzxy;
+  int4 zzxz = (*tint_module_vars.U).v.zzxz;
+  int4 zzyx = (*tint_module_vars.U).v.zzyx;
+  int4 zzyy = (*tint_module_vars.U).v.zzyy;
+  int4 zzyz = (*tint_module_vars.U).v.zzyz;
+  int4 zzzx = (*tint_module_vars.U).v.zzzx;
+  int4 zzzy = (*tint_module_vars.U).v.zzzy;
+  int4 zzzz = (*tint_module_vars.U).v.zzzz;
 }
-
-$B1: {  # root
-  %U:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%f = func():void {
-  $B2: {
-    %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
index 5e60691..4f66376 100644
--- 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
@@ -1,503 +1,132 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  uint3 v;
+};
+struct tint_module_vars_struct {
+  const constant S* U;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  v:vec3<u32> @offset(0)
+void f(tint_module_vars_struct tint_module_vars) {
+  uint3 v = (*tint_module_vars.U).v;
+  uint x = (*tint_module_vars.U).v[0u];
+  uint y = (*tint_module_vars.U).v[1u];
+  uint z = (*tint_module_vars.U).v[2u];
+  uint2 xx = (*tint_module_vars.U).v.xx;
+  uint2 xy = (*tint_module_vars.U).v.xy;
+  uint2 xz = (*tint_module_vars.U).v.xz;
+  uint2 yx = (*tint_module_vars.U).v.yx;
+  uint2 yy = (*tint_module_vars.U).v.yy;
+  uint2 yz = (*tint_module_vars.U).v.yz;
+  uint2 zx = (*tint_module_vars.U).v.zx;
+  uint2 zy = (*tint_module_vars.U).v.zy;
+  uint2 zz = (*tint_module_vars.U).v.zz;
+  uint3 xxx = (*tint_module_vars.U).v.xxx;
+  uint3 xxy = (*tint_module_vars.U).v.xxy;
+  uint3 xxz = (*tint_module_vars.U).v.xxz;
+  uint3 xyx = (*tint_module_vars.U).v.xyx;
+  uint3 xyy = (*tint_module_vars.U).v.xyy;
+  uint3 xyz = (*tint_module_vars.U).v.xyz;
+  uint3 xzx = (*tint_module_vars.U).v.xzx;
+  uint3 xzy = (*tint_module_vars.U).v.xzy;
+  uint3 xzz = (*tint_module_vars.U).v.xzz;
+  uint3 yxx = (*tint_module_vars.U).v.yxx;
+  uint3 yxy = (*tint_module_vars.U).v.yxy;
+  uint3 yxz = (*tint_module_vars.U).v.yxz;
+  uint3 yyx = (*tint_module_vars.U).v.yyx;
+  uint3 yyy = (*tint_module_vars.U).v.yyy;
+  uint3 yyz = (*tint_module_vars.U).v.yyz;
+  uint3 yzx = (*tint_module_vars.U).v.yzx;
+  uint3 yzy = (*tint_module_vars.U).v.yzy;
+  uint3 yzz = (*tint_module_vars.U).v.yzz;
+  uint3 zxx = (*tint_module_vars.U).v.zxx;
+  uint3 zxy = (*tint_module_vars.U).v.zxy;
+  uint3 zxz = (*tint_module_vars.U).v.zxz;
+  uint3 zyx = (*tint_module_vars.U).v.zyx;
+  uint3 zyy = (*tint_module_vars.U).v.zyy;
+  uint3 zyz = (*tint_module_vars.U).v.zyz;
+  uint3 zzx = (*tint_module_vars.U).v.zzx;
+  uint3 zzy = (*tint_module_vars.U).v.zzy;
+  uint3 zzz = (*tint_module_vars.U).v.zzz;
+  uint4 xxxx = (*tint_module_vars.U).v.xxxx;
+  uint4 xxxy = (*tint_module_vars.U).v.xxxy;
+  uint4 xxxz = (*tint_module_vars.U).v.xxxz;
+  uint4 xxyx = (*tint_module_vars.U).v.xxyx;
+  uint4 xxyy = (*tint_module_vars.U).v.xxyy;
+  uint4 xxyz = (*tint_module_vars.U).v.xxyz;
+  uint4 xxzx = (*tint_module_vars.U).v.xxzx;
+  uint4 xxzy = (*tint_module_vars.U).v.xxzy;
+  uint4 xxzz = (*tint_module_vars.U).v.xxzz;
+  uint4 xyxx = (*tint_module_vars.U).v.xyxx;
+  uint4 xyxy = (*tint_module_vars.U).v.xyxy;
+  uint4 xyxz = (*tint_module_vars.U).v.xyxz;
+  uint4 xyyx = (*tint_module_vars.U).v.xyyx;
+  uint4 xyyy = (*tint_module_vars.U).v.xyyy;
+  uint4 xyyz = (*tint_module_vars.U).v.xyyz;
+  uint4 xyzx = (*tint_module_vars.U).v.xyzx;
+  uint4 xyzy = (*tint_module_vars.U).v.xyzy;
+  uint4 xyzz = (*tint_module_vars.U).v.xyzz;
+  uint4 xzxx = (*tint_module_vars.U).v.xzxx;
+  uint4 xzxy = (*tint_module_vars.U).v.xzxy;
+  uint4 xzxz = (*tint_module_vars.U).v.xzxz;
+  uint4 xzyx = (*tint_module_vars.U).v.xzyx;
+  uint4 xzyy = (*tint_module_vars.U).v.xzyy;
+  uint4 xzyz = (*tint_module_vars.U).v.xzyz;
+  uint4 xzzx = (*tint_module_vars.U).v.xzzx;
+  uint4 xzzy = (*tint_module_vars.U).v.xzzy;
+  uint4 xzzz = (*tint_module_vars.U).v.xzzz;
+  uint4 yxxx = (*tint_module_vars.U).v.yxxx;
+  uint4 yxxy = (*tint_module_vars.U).v.yxxy;
+  uint4 yxxz = (*tint_module_vars.U).v.yxxz;
+  uint4 yxyx = (*tint_module_vars.U).v.yxyx;
+  uint4 yxyy = (*tint_module_vars.U).v.yxyy;
+  uint4 yxyz = (*tint_module_vars.U).v.yxyz;
+  uint4 yxzx = (*tint_module_vars.U).v.yxzx;
+  uint4 yxzy = (*tint_module_vars.U).v.yxzy;
+  uint4 yxzz = (*tint_module_vars.U).v.yxzz;
+  uint4 yyxx = (*tint_module_vars.U).v.yyxx;
+  uint4 yyxy = (*tint_module_vars.U).v.yyxy;
+  uint4 yyxz = (*tint_module_vars.U).v.yyxz;
+  uint4 yyyx = (*tint_module_vars.U).v.yyyx;
+  uint4 yyyy = (*tint_module_vars.U).v.yyyy;
+  uint4 yyyz = (*tint_module_vars.U).v.yyyz;
+  uint4 yyzx = (*tint_module_vars.U).v.yyzx;
+  uint4 yyzy = (*tint_module_vars.U).v.yyzy;
+  uint4 yyzz = (*tint_module_vars.U).v.yyzz;
+  uint4 yzxx = (*tint_module_vars.U).v.yzxx;
+  uint4 yzxy = (*tint_module_vars.U).v.yzxy;
+  uint4 yzxz = (*tint_module_vars.U).v.yzxz;
+  uint4 yzyx = (*tint_module_vars.U).v.yzyx;
+  uint4 yzyy = (*tint_module_vars.U).v.yzyy;
+  uint4 yzyz = (*tint_module_vars.U).v.yzyz;
+  uint4 yzzx = (*tint_module_vars.U).v.yzzx;
+  uint4 yzzy = (*tint_module_vars.U).v.yzzy;
+  uint4 yzzz = (*tint_module_vars.U).v.yzzz;
+  uint4 zxxx = (*tint_module_vars.U).v.zxxx;
+  uint4 zxxy = (*tint_module_vars.U).v.zxxy;
+  uint4 zxxz = (*tint_module_vars.U).v.zxxz;
+  uint4 zxyx = (*tint_module_vars.U).v.zxyx;
+  uint4 zxyy = (*tint_module_vars.U).v.zxyy;
+  uint4 zxyz = (*tint_module_vars.U).v.zxyz;
+  uint4 zxzx = (*tint_module_vars.U).v.zxzx;
+  uint4 zxzy = (*tint_module_vars.U).v.zxzy;
+  uint4 zxzz = (*tint_module_vars.U).v.zxzz;
+  uint4 zyxx = (*tint_module_vars.U).v.zyxx;
+  uint4 zyxy = (*tint_module_vars.U).v.zyxy;
+  uint4 zyxz = (*tint_module_vars.U).v.zyxz;
+  uint4 zyyx = (*tint_module_vars.U).v.zyyx;
+  uint4 zyyy = (*tint_module_vars.U).v.zyyy;
+  uint4 zyyz = (*tint_module_vars.U).v.zyyz;
+  uint4 zyzx = (*tint_module_vars.U).v.zyzx;
+  uint4 zyzy = (*tint_module_vars.U).v.zyzy;
+  uint4 zyzz = (*tint_module_vars.U).v.zyzz;
+  uint4 zzxx = (*tint_module_vars.U).v.zzxx;
+  uint4 zzxy = (*tint_module_vars.U).v.zzxy;
+  uint4 zzxz = (*tint_module_vars.U).v.zzxz;
+  uint4 zzyx = (*tint_module_vars.U).v.zzyx;
+  uint4 zzyy = (*tint_module_vars.U).v.zzyy;
+  uint4 zzyz = (*tint_module_vars.U).v.zzyz;
+  uint4 zzzx = (*tint_module_vars.U).v.zzzx;
+  uint4 zzzy = (*tint_module_vars.U).v.zzzy;
+  uint4 zzzz = (*tint_module_vars.U).v.zzzz;
 }
-
-$B1: {  # root
-  %U:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%f = func():void {
-  $B2: {
-    %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
index 3b4dce1..f0e0ee5 100644
--- a/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/swizzle/read/vec3/f16.wgsl.expected.ir.msl
@@ -1,499 +1,132 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct S {
   half3 v;
 };
+struct tint_module_vars_struct {
+  thread S* P;
+};
 
-thread S P = {};
-void f() {
-  half3 v = P.v;
-  half x = P.v[0u];
-  half y = P.v[1u];
-  half z = P.v[2u];
-  half2 xx = P.v.xx;
-  half2 xy = P.v.xy;
-  half2 xz = P.v.xz;
-  half2 yx = P.v.yx;
-  half2 yy = P.v.yy;
-  half2 yz = P.v.yz;
-  half2 zx = P.v.zx;
-  half2 zy = P.v.zy;
-  half2 zz = P.v.zz;
-  half3 xxx = P.v.xxx;
-  half3 xxy = P.v.xxy;
-  half3 xxz = P.v.xxz;
-  half3 xyx = P.v.xyx;
-  half3 xyy = P.v.xyy;
-  half3 xyz = P.v.xyz;
-  half3 xzx = P.v.xzx;
-  half3 xzy = P.v.xzy;
-  half3 xzz = P.v.xzz;
-  half3 yxx = P.v.yxx;
-  half3 yxy = P.v.yxy;
-  half3 yxz = P.v.yxz;
-  half3 yyx = P.v.yyx;
-  half3 yyy = P.v.yyy;
-  half3 yyz = P.v.yyz;
-  half3 yzx = P.v.yzx;
-  half3 yzy = P.v.yzy;
-  half3 yzz = P.v.yzz;
-  half3 zxx = P.v.zxx;
-  half3 zxy = P.v.zxy;
-  half3 zxz = P.v.zxz;
-  half3 zyx = P.v.zyx;
-  half3 zyy = P.v.zyy;
-  half3 zyz = P.v.zyz;
-  half3 zzx = P.v.zzx;
-  half3 zzy = P.v.zzy;
-  half3 zzz = P.v.zzz;
-  half4 xxxx = P.v.xxxx;
-  half4 xxxy = P.v.xxxy;
-  half4 xxxz = P.v.xxxz;
-  half4 xxyx = P.v.xxyx;
-  half4 xxyy = P.v.xxyy;
-  half4 xxyz = P.v.xxyz;
-  half4 xxzx = P.v.xxzx;
-  half4 xxzy = P.v.xxzy;
-  half4 xxzz = P.v.xxzz;
-  half4 xyxx = P.v.xyxx;
-  half4 xyxy = P.v.xyxy;
-  half4 xyxz = P.v.xyxz;
-  half4 xyyx = P.v.xyyx;
-  half4 xyyy = P.v.xyyy;
-  half4 xyyz = P.v.xyyz;
-  half4 xyzx = P.v.xyzx;
-  half4 xyzy = P.v.xyzy;
-  half4 xyzz = P.v.xyzz;
-  half4 xzxx = P.v.xzxx;
-  half4 xzxy = P.v.xzxy;
-  half4 xzxz = P.v.xzxz;
-  half4 xzyx = P.v.xzyx;
-  half4 xzyy = P.v.xzyy;
-  half4 xzyz = P.v.xzyz;
-  half4 xzzx = P.v.xzzx;
-  half4 xzzy = P.v.xzzy;
-  half4 xzzz = P.v.xzzz;
-  half4 yxxx = P.v.yxxx;
-  half4 yxxy = P.v.yxxy;
-  half4 yxxz = P.v.yxxz;
-  half4 yxyx = P.v.yxyx;
-  half4 yxyy = P.v.yxyy;
-  half4 yxyz = P.v.yxyz;
-  half4 yxzx = P.v.yxzx;
-  half4 yxzy = P.v.yxzy;
-  half4 yxzz = P.v.yxzz;
-  half4 yyxx = P.v.yyxx;
-  half4 yyxy = P.v.yyxy;
-  half4 yyxz = P.v.yyxz;
-  half4 yyyx = P.v.yyyx;
-  half4 yyyy = P.v.yyyy;
-  half4 yyyz = P.v.yyyz;
-  half4 yyzx = P.v.yyzx;
-  half4 yyzy = P.v.yyzy;
-  half4 yyzz = P.v.yyzz;
-  half4 yzxx = P.v.yzxx;
-  half4 yzxy = P.v.yzxy;
-  half4 yzxz = P.v.yzxz;
-  half4 yzyx = P.v.yzyx;
-  half4 yzyy = P.v.yzyy;
-  half4 yzyz = P.v.yzyz;
-  half4 yzzx = P.v.yzzx;
-  half4 yzzy = P.v.yzzy;
-  half4 yzzz = P.v.yzzz;
-  half4 zxxx = P.v.zxxx;
-  half4 zxxy = P.v.zxxy;
-  half4 zxxz = P.v.zxxz;
-  half4 zxyx = P.v.zxyx;
-  half4 zxyy = P.v.zxyy;
-  half4 zxyz = P.v.zxyz;
-  half4 zxzx = P.v.zxzx;
-  half4 zxzy = P.v.zxzy;
-  half4 zxzz = P.v.zxzz;
-  half4 zyxx = P.v.zyxx;
-  half4 zyxy = P.v.zyxy;
-  half4 zyxz = P.v.zyxz;
-  half4 zyyx = P.v.zyyx;
-  half4 zyyy = P.v.zyyy;
-  half4 zyyz = P.v.zyyz;
-  half4 zyzx = P.v.zyzx;
-  half4 zyzy = P.v.zyzy;
-  half4 zyzz = P.v.zyzz;
-  half4 zzxx = P.v.zzxx;
-  half4 zzxy = P.v.zzxy;
-  half4 zzxz = P.v.zzxz;
-  half4 zzyx = P.v.zzyx;
-  half4 zzyy = P.v.zzyy;
-  half4 zzyz = P.v.zzyz;
-  half4 zzzx = P.v.zzzx;
-  half4 zzzy = P.v.zzzy;
-  half4 zzzz = P.v.zzzz;
+void f(tint_module_vars_struct tint_module_vars) {
+  half3 v = (*tint_module_vars.P).v;
+  half x = (*tint_module_vars.P).v[0u];
+  half y = (*tint_module_vars.P).v[1u];
+  half z = (*tint_module_vars.P).v[2u];
+  half2 xx = (*tint_module_vars.P).v.xx;
+  half2 xy = (*tint_module_vars.P).v.xy;
+  half2 xz = (*tint_module_vars.P).v.xz;
+  half2 yx = (*tint_module_vars.P).v.yx;
+  half2 yy = (*tint_module_vars.P).v.yy;
+  half2 yz = (*tint_module_vars.P).v.yz;
+  half2 zx = (*tint_module_vars.P).v.zx;
+  half2 zy = (*tint_module_vars.P).v.zy;
+  half2 zz = (*tint_module_vars.P).v.zz;
+  half3 xxx = (*tint_module_vars.P).v.xxx;
+  half3 xxy = (*tint_module_vars.P).v.xxy;
+  half3 xxz = (*tint_module_vars.P).v.xxz;
+  half3 xyx = (*tint_module_vars.P).v.xyx;
+  half3 xyy = (*tint_module_vars.P).v.xyy;
+  half3 xyz = (*tint_module_vars.P).v.xyz;
+  half3 xzx = (*tint_module_vars.P).v.xzx;
+  half3 xzy = (*tint_module_vars.P).v.xzy;
+  half3 xzz = (*tint_module_vars.P).v.xzz;
+  half3 yxx = (*tint_module_vars.P).v.yxx;
+  half3 yxy = (*tint_module_vars.P).v.yxy;
+  half3 yxz = (*tint_module_vars.P).v.yxz;
+  half3 yyx = (*tint_module_vars.P).v.yyx;
+  half3 yyy = (*tint_module_vars.P).v.yyy;
+  half3 yyz = (*tint_module_vars.P).v.yyz;
+  half3 yzx = (*tint_module_vars.P).v.yzx;
+  half3 yzy = (*tint_module_vars.P).v.yzy;
+  half3 yzz = (*tint_module_vars.P).v.yzz;
+  half3 zxx = (*tint_module_vars.P).v.zxx;
+  half3 zxy = (*tint_module_vars.P).v.zxy;
+  half3 zxz = (*tint_module_vars.P).v.zxz;
+  half3 zyx = (*tint_module_vars.P).v.zyx;
+  half3 zyy = (*tint_module_vars.P).v.zyy;
+  half3 zyz = (*tint_module_vars.P).v.zyz;
+  half3 zzx = (*tint_module_vars.P).v.zzx;
+  half3 zzy = (*tint_module_vars.P).v.zzy;
+  half3 zzz = (*tint_module_vars.P).v.zzz;
+  half4 xxxx = (*tint_module_vars.P).v.xxxx;
+  half4 xxxy = (*tint_module_vars.P).v.xxxy;
+  half4 xxxz = (*tint_module_vars.P).v.xxxz;
+  half4 xxyx = (*tint_module_vars.P).v.xxyx;
+  half4 xxyy = (*tint_module_vars.P).v.xxyy;
+  half4 xxyz = (*tint_module_vars.P).v.xxyz;
+  half4 xxzx = (*tint_module_vars.P).v.xxzx;
+  half4 xxzy = (*tint_module_vars.P).v.xxzy;
+  half4 xxzz = (*tint_module_vars.P).v.xxzz;
+  half4 xyxx = (*tint_module_vars.P).v.xyxx;
+  half4 xyxy = (*tint_module_vars.P).v.xyxy;
+  half4 xyxz = (*tint_module_vars.P).v.xyxz;
+  half4 xyyx = (*tint_module_vars.P).v.xyyx;
+  half4 xyyy = (*tint_module_vars.P).v.xyyy;
+  half4 xyyz = (*tint_module_vars.P).v.xyyz;
+  half4 xyzx = (*tint_module_vars.P).v.xyzx;
+  half4 xyzy = (*tint_module_vars.P).v.xyzy;
+  half4 xyzz = (*tint_module_vars.P).v.xyzz;
+  half4 xzxx = (*tint_module_vars.P).v.xzxx;
+  half4 xzxy = (*tint_module_vars.P).v.xzxy;
+  half4 xzxz = (*tint_module_vars.P).v.xzxz;
+  half4 xzyx = (*tint_module_vars.P).v.xzyx;
+  half4 xzyy = (*tint_module_vars.P).v.xzyy;
+  half4 xzyz = (*tint_module_vars.P).v.xzyz;
+  half4 xzzx = (*tint_module_vars.P).v.xzzx;
+  half4 xzzy = (*tint_module_vars.P).v.xzzy;
+  half4 xzzz = (*tint_module_vars.P).v.xzzz;
+  half4 yxxx = (*tint_module_vars.P).v.yxxx;
+  half4 yxxy = (*tint_module_vars.P).v.yxxy;
+  half4 yxxz = (*tint_module_vars.P).v.yxxz;
+  half4 yxyx = (*tint_module_vars.P).v.yxyx;
+  half4 yxyy = (*tint_module_vars.P).v.yxyy;
+  half4 yxyz = (*tint_module_vars.P).v.yxyz;
+  half4 yxzx = (*tint_module_vars.P).v.yxzx;
+  half4 yxzy = (*tint_module_vars.P).v.yxzy;
+  half4 yxzz = (*tint_module_vars.P).v.yxzz;
+  half4 yyxx = (*tint_module_vars.P).v.yyxx;
+  half4 yyxy = (*tint_module_vars.P).v.yyxy;
+  half4 yyxz = (*tint_module_vars.P).v.yyxz;
+  half4 yyyx = (*tint_module_vars.P).v.yyyx;
+  half4 yyyy = (*tint_module_vars.P).v.yyyy;
+  half4 yyyz = (*tint_module_vars.P).v.yyyz;
+  half4 yyzx = (*tint_module_vars.P).v.yyzx;
+  half4 yyzy = (*tint_module_vars.P).v.yyzy;
+  half4 yyzz = (*tint_module_vars.P).v.yyzz;
+  half4 yzxx = (*tint_module_vars.P).v.yzxx;
+  half4 yzxy = (*tint_module_vars.P).v.yzxy;
+  half4 yzxz = (*tint_module_vars.P).v.yzxz;
+  half4 yzyx = (*tint_module_vars.P).v.yzyx;
+  half4 yzyy = (*tint_module_vars.P).v.yzyy;
+  half4 yzyz = (*tint_module_vars.P).v.yzyz;
+  half4 yzzx = (*tint_module_vars.P).v.yzzx;
+  half4 yzzy = (*tint_module_vars.P).v.yzzy;
+  half4 yzzz = (*tint_module_vars.P).v.yzzz;
+  half4 zxxx = (*tint_module_vars.P).v.zxxx;
+  half4 zxxy = (*tint_module_vars.P).v.zxxy;
+  half4 zxxz = (*tint_module_vars.P).v.zxxz;
+  half4 zxyx = (*tint_module_vars.P).v.zxyx;
+  half4 zxyy = (*tint_module_vars.P).v.zxyy;
+  half4 zxyz = (*tint_module_vars.P).v.zxyz;
+  half4 zxzx = (*tint_module_vars.P).v.zxzx;
+  half4 zxzy = (*tint_module_vars.P).v.zxzy;
+  half4 zxzz = (*tint_module_vars.P).v.zxzz;
+  half4 zyxx = (*tint_module_vars.P).v.zyxx;
+  half4 zyxy = (*tint_module_vars.P).v.zyxy;
+  half4 zyxz = (*tint_module_vars.P).v.zyxz;
+  half4 zyyx = (*tint_module_vars.P).v.zyyx;
+  half4 zyyy = (*tint_module_vars.P).v.zyyy;
+  half4 zyyz = (*tint_module_vars.P).v.zyyz;
+  half4 zyzx = (*tint_module_vars.P).v.zyzx;
+  half4 zyzy = (*tint_module_vars.P).v.zyzy;
+  half4 zyzz = (*tint_module_vars.P).v.zyzz;
+  half4 zzxx = (*tint_module_vars.P).v.zzxx;
+  half4 zzxy = (*tint_module_vars.P).v.zzxy;
+  half4 zzxz = (*tint_module_vars.P).v.zzxz;
+  half4 zzyx = (*tint_module_vars.P).v.zzyx;
+  half4 zzyy = (*tint_module_vars.P).v.zzyy;
+  half4 zzyz = (*tint_module_vars.P).v.zzyz;
+  half4 zzzx = (*tint_module_vars.P).v.zzzx;
+  half4 zzzy = (*tint_module_vars.P).v.zzzy;
+  half4 zzzz = (*tint_module_vars.P).v.zzzz;
 }
-program_source:7:10: error: program scope variable must reside in constant address space
-thread S P = {};
-         ^
-program_source:9:9: warning: unused variable 'v' [-Wunused-variable]
-  half3 v = P.v;
-        ^
-program_source:10:8: warning: unused variable 'x' [-Wunused-variable]
-  half x = P.v[0u];
-       ^
-program_source:11:8: warning: unused variable 'y' [-Wunused-variable]
-  half y = P.v[1u];
-       ^
-program_source:12:8: warning: unused variable 'z' [-Wunused-variable]
-  half z = P.v[2u];
-       ^
-program_source:13:9: warning: unused variable 'xx' [-Wunused-variable]
-  half2 xx = P.v.xx;
-        ^
-program_source:14:9: warning: unused variable 'xy' [-Wunused-variable]
-  half2 xy = P.v.xy;
-        ^
-program_source:15:9: warning: unused variable 'xz' [-Wunused-variable]
-  half2 xz = P.v.xz;
-        ^
-program_source:16:9: warning: unused variable 'yx' [-Wunused-variable]
-  half2 yx = P.v.yx;
-        ^
-program_source:17:9: warning: unused variable 'yy' [-Wunused-variable]
-  half2 yy = P.v.yy;
-        ^
-program_source:18:9: warning: unused variable 'yz' [-Wunused-variable]
-  half2 yz = P.v.yz;
-        ^
-program_source:19:9: warning: unused variable 'zx' [-Wunused-variable]
-  half2 zx = P.v.zx;
-        ^
-program_source:20:9: warning: unused variable 'zy' [-Wunused-variable]
-  half2 zy = P.v.zy;
-        ^
-program_source:21:9: warning: unused variable 'zz' [-Wunused-variable]
-  half2 zz = P.v.zz;
-        ^
-program_source:22:9: warning: unused variable 'xxx' [-Wunused-variable]
-  half3 xxx = P.v.xxx;
-        ^
-program_source:23:9: warning: unused variable 'xxy' [-Wunused-variable]
-  half3 xxy = P.v.xxy;
-        ^
-program_source:24:9: warning: unused variable 'xxz' [-Wunused-variable]
-  half3 xxz = P.v.xxz;
-        ^
-program_source:25:9: warning: unused variable 'xyx' [-Wunused-variable]
-  half3 xyx = P.v.xyx;
-        ^
-program_source:26:9: warning: unused variable 'xyy' [-Wunused-variable]
-  half3 xyy = P.v.xyy;
-        ^
-program_source:27:9: warning: unused variable 'xyz' [-Wunused-variable]
-  half3 xyz = P.v.xyz;
-        ^
-program_source:28:9: warning: unused variable 'xzx' [-Wunused-variable]
-  half3 xzx = P.v.xzx;
-        ^
-program_source:29:9: warning: unused variable 'xzy' [-Wunused-variable]
-  half3 xzy = P.v.xzy;
-        ^
-program_source:30:9: warning: unused variable 'xzz' [-Wunused-variable]
-  half3 xzz = P.v.xzz;
-        ^
-program_source:31:9: warning: unused variable 'yxx' [-Wunused-variable]
-  half3 yxx = P.v.yxx;
-        ^
-program_source:32:9: warning: unused variable 'yxy' [-Wunused-variable]
-  half3 yxy = P.v.yxy;
-        ^
-program_source:33:9: warning: unused variable 'yxz' [-Wunused-variable]
-  half3 yxz = P.v.yxz;
-        ^
-program_source:34:9: warning: unused variable 'yyx' [-Wunused-variable]
-  half3 yyx = P.v.yyx;
-        ^
-program_source:35:9: warning: unused variable 'yyy' [-Wunused-variable]
-  half3 yyy = P.v.yyy;
-        ^
-program_source:36:9: warning: unused variable 'yyz' [-Wunused-variable]
-  half3 yyz = P.v.yyz;
-        ^
-program_source:37:9: warning: unused variable 'yzx' [-Wunused-variable]
-  half3 yzx = P.v.yzx;
-        ^
-program_source:38:9: warning: unused variable 'yzy' [-Wunused-variable]
-  half3 yzy = P.v.yzy;
-        ^
-program_source:39:9: warning: unused variable 'yzz' [-Wunused-variable]
-  half3 yzz = P.v.yzz;
-        ^
-program_source:40:9: warning: unused variable 'zxx' [-Wunused-variable]
-  half3 zxx = P.v.zxx;
-        ^
-program_source:41:9: warning: unused variable 'zxy' [-Wunused-variable]
-  half3 zxy = P.v.zxy;
-        ^
-program_source:42:9: warning: unused variable 'zxz' [-Wunused-variable]
-  half3 zxz = P.v.zxz;
-        ^
-program_source:43:9: warning: unused variable 'zyx' [-Wunused-variable]
-  half3 zyx = P.v.zyx;
-        ^
-program_source:44:9: warning: unused variable 'zyy' [-Wunused-variable]
-  half3 zyy = P.v.zyy;
-        ^
-program_source:45:9: warning: unused variable 'zyz' [-Wunused-variable]
-  half3 zyz = P.v.zyz;
-        ^
-program_source:46:9: warning: unused variable 'zzx' [-Wunused-variable]
-  half3 zzx = P.v.zzx;
-        ^
-program_source:47:9: warning: unused variable 'zzy' [-Wunused-variable]
-  half3 zzy = P.v.zzy;
-        ^
-program_source:48:9: warning: unused variable 'zzz' [-Wunused-variable]
-  half3 zzz = P.v.zzz;
-        ^
-program_source:49:9: warning: unused variable 'xxxx' [-Wunused-variable]
-  half4 xxxx = P.v.xxxx;
-        ^
-program_source:50:9: warning: unused variable 'xxxy' [-Wunused-variable]
-  half4 xxxy = P.v.xxxy;
-        ^
-program_source:51:9: warning: unused variable 'xxxz' [-Wunused-variable]
-  half4 xxxz = P.v.xxxz;
-        ^
-program_source:52:9: warning: unused variable 'xxyx' [-Wunused-variable]
-  half4 xxyx = P.v.xxyx;
-        ^
-program_source:53:9: warning: unused variable 'xxyy' [-Wunused-variable]
-  half4 xxyy = P.v.xxyy;
-        ^
-program_source:54:9: warning: unused variable 'xxyz' [-Wunused-variable]
-  half4 xxyz = P.v.xxyz;
-        ^
-program_source:55:9: warning: unused variable 'xxzx' [-Wunused-variable]
-  half4 xxzx = P.v.xxzx;
-        ^
-program_source:56:9: warning: unused variable 'xxzy' [-Wunused-variable]
-  half4 xxzy = P.v.xxzy;
-        ^
-program_source:57:9: warning: unused variable 'xxzz' [-Wunused-variable]
-  half4 xxzz = P.v.xxzz;
-        ^
-program_source:58:9: warning: unused variable 'xyxx' [-Wunused-variable]
-  half4 xyxx = P.v.xyxx;
-        ^
-program_source:59:9: warning: unused variable 'xyxy' [-Wunused-variable]
-  half4 xyxy = P.v.xyxy;
-        ^
-program_source:60:9: warning: unused variable 'xyxz' [-Wunused-variable]
-  half4 xyxz = P.v.xyxz;
-        ^
-program_source:61:9: warning: unused variable 'xyyx' [-Wunused-variable]
-  half4 xyyx = P.v.xyyx;
-        ^
-program_source:62:9: warning: unused variable 'xyyy' [-Wunused-variable]
-  half4 xyyy = P.v.xyyy;
-        ^
-program_source:63:9: warning: unused variable 'xyyz' [-Wunused-variable]
-  half4 xyyz = P.v.xyyz;
-        ^
-program_source:64:9: warning: unused variable 'xyzx' [-Wunused-variable]
-  half4 xyzx = P.v.xyzx;
-        ^
-program_source:65:9: warning: unused variable 'xyzy' [-Wunused-variable]
-  half4 xyzy = P.v.xyzy;
-        ^
-program_source:66:9: warning: unused variable 'xyzz' [-Wunused-variable]
-  half4 xyzz = P.v.xyzz;
-        ^
-program_source:67:9: warning: unused variable 'xzxx' [-Wunused-variable]
-  half4 xzxx = P.v.xzxx;
-        ^
-program_source:68:9: warning: unused variable 'xzxy' [-Wunused-variable]
-  half4 xzxy = P.v.xzxy;
-        ^
-program_source:69:9: warning: unused variable 'xzxz' [-Wunused-variable]
-  half4 xzxz = P.v.xzxz;
-        ^
-program_source:70:9: warning: unused variable 'xzyx' [-Wunused-variable]
-  half4 xzyx = P.v.xzyx;
-        ^
-program_source:71:9: warning: unused variable 'xzyy' [-Wunused-variable]
-  half4 xzyy = P.v.xzyy;
-        ^
-program_source:72:9: warning: unused variable 'xzyz' [-Wunused-variable]
-  half4 xzyz = P.v.xzyz;
-        ^
-program_source:73:9: warning: unused variable 'xzzx' [-Wunused-variable]
-  half4 xzzx = P.v.xzzx;
-        ^
-program_source:74:9: warning: unused variable 'xzzy' [-Wunused-variable]
-  half4 xzzy = P.v.xzzy;
-        ^
-program_source:75:9: warning: unused variable 'xzzz' [-Wunused-variable]
-  half4 xzzz = P.v.xzzz;
-        ^
-program_source:76:9: warning: unused variable 'yxxx' [-Wunused-variable]
-  half4 yxxx = P.v.yxxx;
-        ^
-program_source:77:9: warning: unused variable 'yxxy' [-Wunused-variable]
-  half4 yxxy = P.v.yxxy;
-        ^
-program_source:78:9: warning: unused variable 'yxxz' [-Wunused-variable]
-  half4 yxxz = P.v.yxxz;
-        ^
-program_source:79:9: warning: unused variable 'yxyx' [-Wunused-variable]
-  half4 yxyx = P.v.yxyx;
-        ^
-program_source:80:9: warning: unused variable 'yxyy' [-Wunused-variable]
-  half4 yxyy = P.v.yxyy;
-        ^
-program_source:81:9: warning: unused variable 'yxyz' [-Wunused-variable]
-  half4 yxyz = P.v.yxyz;
-        ^
-program_source:82:9: warning: unused variable 'yxzx' [-Wunused-variable]
-  half4 yxzx = P.v.yxzx;
-        ^
-program_source:83:9: warning: unused variable 'yxzy' [-Wunused-variable]
-  half4 yxzy = P.v.yxzy;
-        ^
-program_source:84:9: warning: unused variable 'yxzz' [-Wunused-variable]
-  half4 yxzz = P.v.yxzz;
-        ^
-program_source:85:9: warning: unused variable 'yyxx' [-Wunused-variable]
-  half4 yyxx = P.v.yyxx;
-        ^
-program_source:86:9: warning: unused variable 'yyxy' [-Wunused-variable]
-  half4 yyxy = P.v.yyxy;
-        ^
-program_source:87:9: warning: unused variable 'yyxz' [-Wunused-variable]
-  half4 yyxz = P.v.yyxz;
-        ^
-program_source:88:9: warning: unused variable 'yyyx' [-Wunused-variable]
-  half4 yyyx = P.v.yyyx;
-        ^
-program_source:89:9: warning: unused variable 'yyyy' [-Wunused-variable]
-  half4 yyyy = P.v.yyyy;
-        ^
-program_source:90:9: warning: unused variable 'yyyz' [-Wunused-variable]
-  half4 yyyz = P.v.yyyz;
-        ^
-program_source:91:9: warning: unused variable 'yyzx' [-Wunused-variable]
-  half4 yyzx = P.v.yyzx;
-        ^
-program_source:92:9: warning: unused variable 'yyzy' [-Wunused-variable]
-  half4 yyzy = P.v.yyzy;
-        ^
-program_source:93:9: warning: unused variable 'yyzz' [-Wunused-variable]
-  half4 yyzz = P.v.yyzz;
-        ^
-program_source:94:9: warning: unused variable 'yzxx' [-Wunused-variable]
-  half4 yzxx = P.v.yzxx;
-        ^
-program_source:95:9: warning: unused variable 'yzxy' [-Wunused-variable]
-  half4 yzxy = P.v.yzxy;
-        ^
-program_source:96:9: warning: unused variable 'yzxz' [-Wunused-variable]
-  half4 yzxz = P.v.yzxz;
-        ^
-program_source:97:9: warning: unused variable 'yzyx' [-Wunused-variable]
-  half4 yzyx = P.v.yzyx;
-        ^
-program_source:98:9: warning: unused variable 'yzyy' [-Wunused-variable]
-  half4 yzyy = P.v.yzyy;
-        ^
-program_source:99:9: warning: unused variable 'yzyz' [-Wunused-variable]
-  half4 yzyz = P.v.yzyz;
-        ^
-program_source:100:9: warning: unused variable 'yzzx' [-Wunused-variable]
-  half4 yzzx = P.v.yzzx;
-        ^
-program_source:101:9: warning: unused variable 'yzzy' [-Wunused-variable]
-  half4 yzzy = P.v.yzzy;
-        ^
-program_source:102:9: warning: unused variable 'yzzz' [-Wunused-variable]
-  half4 yzzz = P.v.yzzz;
-        ^
-program_source:103:9: warning: unused variable 'zxxx' [-Wunused-variable]
-  half4 zxxx = P.v.zxxx;
-        ^
-program_source:104:9: warning: unused variable 'zxxy' [-Wunused-variable]
-  half4 zxxy = P.v.zxxy;
-        ^
-program_source:105:9: warning: unused variable 'zxxz' [-Wunused-variable]
-  half4 zxxz = P.v.zxxz;
-        ^
-program_source:106:9: warning: unused variable 'zxyx' [-Wunused-variable]
-  half4 zxyx = P.v.zxyx;
-        ^
-program_source:107:9: warning: unused variable 'zxyy' [-Wunused-variable]
-  half4 zxyy = P.v.zxyy;
-        ^
-program_source:108:9: warning: unused variable 'zxyz' [-Wunused-variable]
-  half4 zxyz = P.v.zxyz;
-        ^
-program_source:109:9: warning: unused variable 'zxzx' [-Wunused-variable]
-  half4 zxzx = P.v.zxzx;
-        ^
-program_source:110:9: warning: unused variable 'zxzy' [-Wunused-variable]
-  half4 zxzy = P.v.zxzy;
-        ^
-program_source:111:9: warning: unused variable 'zxzz' [-Wunused-variable]
-  half4 zxzz = P.v.zxzz;
-        ^
-program_source:112:9: warning: unused variable 'zyxx' [-Wunused-variable]
-  half4 zyxx = P.v.zyxx;
-        ^
-program_source:113:9: warning: unused variable 'zyxy' [-Wunused-variable]
-  half4 zyxy = P.v.zyxy;
-        ^
-program_source:114:9: warning: unused variable 'zyxz' [-Wunused-variable]
-  half4 zyxz = P.v.zyxz;
-        ^
-program_source:115:9: warning: unused variable 'zyyx' [-Wunused-variable]
-  half4 zyyx = P.v.zyyx;
-        ^
-program_source:116:9: warning: unused variable 'zyyy' [-Wunused-variable]
-  half4 zyyy = P.v.zyyy;
-        ^
-program_source:117:9: warning: unused variable 'zyyz' [-Wunused-variable]
-  half4 zyyz = P.v.zyyz;
-        ^
-program_source:118:9: warning: unused variable 'zyzx' [-Wunused-variable]
-  half4 zyzx = P.v.zyzx;
-        ^
-program_source:119:9: warning: unused variable 'zyzy' [-Wunused-variable]
-  half4 zyzy = P.v.zyzy;
-        ^
-program_source:120:9: warning: unused variable 'zyzz' [-Wunused-variable]
-  half4 zyzz = P.v.zyzz;
-        ^
-program_source:121:9: warning: unused variable 'zzxx' [-Wunused-variable]
-  half4 zzxx = P.v.zzxx;
-        ^
-program_source:122:9: warning: unused variable 'zzxy' [-Wunused-variable]
-  half4 zzxy = P.v.zzxy;
-        ^
-program_source:123:9: warning: unused variable 'zzxz' [-Wunused-variable]
-  half4 zzxz = P.v.zzxz;
-        ^
-program_source:124:9: warning: unused variable 'zzyx' [-Wunused-variable]
-  half4 zzyx = P.v.zzyx;
-        ^
-program_source:125:9: warning: unused variable 'zzyy' [-Wunused-variable]
-  half4 zzyy = P.v.zzyy;
-        ^
-program_source:126:9: warning: unused variable 'zzyz' [-Wunused-variable]
-  half4 zzyz = P.v.zzyz;
-        ^
-program_source:127:9: warning: unused variable 'zzzx' [-Wunused-variable]
-  half4 zzzx = P.v.zzzx;
-        ^
-program_source:128:9: warning: unused variable 'zzzy' [-Wunused-variable]
-  half4 zzzy = P.v.zzzy;
-        ^
-program_source:129:9: warning: unused variable 'zzzz' [-Wunused-variable]
-  half4 zzzz = P.v.zzzz;
-        ^
-
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
index 8bf573f..c199dc5 100644
--- a/test/tint/expressions/swizzle/read/vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/swizzle/read/vec3/f32.wgsl.expected.ir.msl
@@ -1,499 +1,132 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct S {
   float3 v;
 };
+struct tint_module_vars_struct {
+  thread S* P;
+};
 
-thread S P = {};
-void f() {
-  float3 v = P.v;
-  float x = P.v[0u];
-  float y = P.v[1u];
-  float z = P.v[2u];
-  float2 xx = P.v.xx;
-  float2 xy = P.v.xy;
-  float2 xz = P.v.xz;
-  float2 yx = P.v.yx;
-  float2 yy = P.v.yy;
-  float2 yz = P.v.yz;
-  float2 zx = P.v.zx;
-  float2 zy = P.v.zy;
-  float2 zz = P.v.zz;
-  float3 xxx = P.v.xxx;
-  float3 xxy = P.v.xxy;
-  float3 xxz = P.v.xxz;
-  float3 xyx = P.v.xyx;
-  float3 xyy = P.v.xyy;
-  float3 xyz = P.v.xyz;
-  float3 xzx = P.v.xzx;
-  float3 xzy = P.v.xzy;
-  float3 xzz = P.v.xzz;
-  float3 yxx = P.v.yxx;
-  float3 yxy = P.v.yxy;
-  float3 yxz = P.v.yxz;
-  float3 yyx = P.v.yyx;
-  float3 yyy = P.v.yyy;
-  float3 yyz = P.v.yyz;
-  float3 yzx = P.v.yzx;
-  float3 yzy = P.v.yzy;
-  float3 yzz = P.v.yzz;
-  float3 zxx = P.v.zxx;
-  float3 zxy = P.v.zxy;
-  float3 zxz = P.v.zxz;
-  float3 zyx = P.v.zyx;
-  float3 zyy = P.v.zyy;
-  float3 zyz = P.v.zyz;
-  float3 zzx = P.v.zzx;
-  float3 zzy = P.v.zzy;
-  float3 zzz = P.v.zzz;
-  float4 xxxx = P.v.xxxx;
-  float4 xxxy = P.v.xxxy;
-  float4 xxxz = P.v.xxxz;
-  float4 xxyx = P.v.xxyx;
-  float4 xxyy = P.v.xxyy;
-  float4 xxyz = P.v.xxyz;
-  float4 xxzx = P.v.xxzx;
-  float4 xxzy = P.v.xxzy;
-  float4 xxzz = P.v.xxzz;
-  float4 xyxx = P.v.xyxx;
-  float4 xyxy = P.v.xyxy;
-  float4 xyxz = P.v.xyxz;
-  float4 xyyx = P.v.xyyx;
-  float4 xyyy = P.v.xyyy;
-  float4 xyyz = P.v.xyyz;
-  float4 xyzx = P.v.xyzx;
-  float4 xyzy = P.v.xyzy;
-  float4 xyzz = P.v.xyzz;
-  float4 xzxx = P.v.xzxx;
-  float4 xzxy = P.v.xzxy;
-  float4 xzxz = P.v.xzxz;
-  float4 xzyx = P.v.xzyx;
-  float4 xzyy = P.v.xzyy;
-  float4 xzyz = P.v.xzyz;
-  float4 xzzx = P.v.xzzx;
-  float4 xzzy = P.v.xzzy;
-  float4 xzzz = P.v.xzzz;
-  float4 yxxx = P.v.yxxx;
-  float4 yxxy = P.v.yxxy;
-  float4 yxxz = P.v.yxxz;
-  float4 yxyx = P.v.yxyx;
-  float4 yxyy = P.v.yxyy;
-  float4 yxyz = P.v.yxyz;
-  float4 yxzx = P.v.yxzx;
-  float4 yxzy = P.v.yxzy;
-  float4 yxzz = P.v.yxzz;
-  float4 yyxx = P.v.yyxx;
-  float4 yyxy = P.v.yyxy;
-  float4 yyxz = P.v.yyxz;
-  float4 yyyx = P.v.yyyx;
-  float4 yyyy = P.v.yyyy;
-  float4 yyyz = P.v.yyyz;
-  float4 yyzx = P.v.yyzx;
-  float4 yyzy = P.v.yyzy;
-  float4 yyzz = P.v.yyzz;
-  float4 yzxx = P.v.yzxx;
-  float4 yzxy = P.v.yzxy;
-  float4 yzxz = P.v.yzxz;
-  float4 yzyx = P.v.yzyx;
-  float4 yzyy = P.v.yzyy;
-  float4 yzyz = P.v.yzyz;
-  float4 yzzx = P.v.yzzx;
-  float4 yzzy = P.v.yzzy;
-  float4 yzzz = P.v.yzzz;
-  float4 zxxx = P.v.zxxx;
-  float4 zxxy = P.v.zxxy;
-  float4 zxxz = P.v.zxxz;
-  float4 zxyx = P.v.zxyx;
-  float4 zxyy = P.v.zxyy;
-  float4 zxyz = P.v.zxyz;
-  float4 zxzx = P.v.zxzx;
-  float4 zxzy = P.v.zxzy;
-  float4 zxzz = P.v.zxzz;
-  float4 zyxx = P.v.zyxx;
-  float4 zyxy = P.v.zyxy;
-  float4 zyxz = P.v.zyxz;
-  float4 zyyx = P.v.zyyx;
-  float4 zyyy = P.v.zyyy;
-  float4 zyyz = P.v.zyyz;
-  float4 zyzx = P.v.zyzx;
-  float4 zyzy = P.v.zyzy;
-  float4 zyzz = P.v.zyzz;
-  float4 zzxx = P.v.zzxx;
-  float4 zzxy = P.v.zzxy;
-  float4 zzxz = P.v.zzxz;
-  float4 zzyx = P.v.zzyx;
-  float4 zzyy = P.v.zzyy;
-  float4 zzyz = P.v.zzyz;
-  float4 zzzx = P.v.zzzx;
-  float4 zzzy = P.v.zzzy;
-  float4 zzzz = P.v.zzzz;
+void f(tint_module_vars_struct tint_module_vars) {
+  float3 v = (*tint_module_vars.P).v;
+  float x = (*tint_module_vars.P).v[0u];
+  float y = (*tint_module_vars.P).v[1u];
+  float z = (*tint_module_vars.P).v[2u];
+  float2 xx = (*tint_module_vars.P).v.xx;
+  float2 xy = (*tint_module_vars.P).v.xy;
+  float2 xz = (*tint_module_vars.P).v.xz;
+  float2 yx = (*tint_module_vars.P).v.yx;
+  float2 yy = (*tint_module_vars.P).v.yy;
+  float2 yz = (*tint_module_vars.P).v.yz;
+  float2 zx = (*tint_module_vars.P).v.zx;
+  float2 zy = (*tint_module_vars.P).v.zy;
+  float2 zz = (*tint_module_vars.P).v.zz;
+  float3 xxx = (*tint_module_vars.P).v.xxx;
+  float3 xxy = (*tint_module_vars.P).v.xxy;
+  float3 xxz = (*tint_module_vars.P).v.xxz;
+  float3 xyx = (*tint_module_vars.P).v.xyx;
+  float3 xyy = (*tint_module_vars.P).v.xyy;
+  float3 xyz = (*tint_module_vars.P).v.xyz;
+  float3 xzx = (*tint_module_vars.P).v.xzx;
+  float3 xzy = (*tint_module_vars.P).v.xzy;
+  float3 xzz = (*tint_module_vars.P).v.xzz;
+  float3 yxx = (*tint_module_vars.P).v.yxx;
+  float3 yxy = (*tint_module_vars.P).v.yxy;
+  float3 yxz = (*tint_module_vars.P).v.yxz;
+  float3 yyx = (*tint_module_vars.P).v.yyx;
+  float3 yyy = (*tint_module_vars.P).v.yyy;
+  float3 yyz = (*tint_module_vars.P).v.yyz;
+  float3 yzx = (*tint_module_vars.P).v.yzx;
+  float3 yzy = (*tint_module_vars.P).v.yzy;
+  float3 yzz = (*tint_module_vars.P).v.yzz;
+  float3 zxx = (*tint_module_vars.P).v.zxx;
+  float3 zxy = (*tint_module_vars.P).v.zxy;
+  float3 zxz = (*tint_module_vars.P).v.zxz;
+  float3 zyx = (*tint_module_vars.P).v.zyx;
+  float3 zyy = (*tint_module_vars.P).v.zyy;
+  float3 zyz = (*tint_module_vars.P).v.zyz;
+  float3 zzx = (*tint_module_vars.P).v.zzx;
+  float3 zzy = (*tint_module_vars.P).v.zzy;
+  float3 zzz = (*tint_module_vars.P).v.zzz;
+  float4 xxxx = (*tint_module_vars.P).v.xxxx;
+  float4 xxxy = (*tint_module_vars.P).v.xxxy;
+  float4 xxxz = (*tint_module_vars.P).v.xxxz;
+  float4 xxyx = (*tint_module_vars.P).v.xxyx;
+  float4 xxyy = (*tint_module_vars.P).v.xxyy;
+  float4 xxyz = (*tint_module_vars.P).v.xxyz;
+  float4 xxzx = (*tint_module_vars.P).v.xxzx;
+  float4 xxzy = (*tint_module_vars.P).v.xxzy;
+  float4 xxzz = (*tint_module_vars.P).v.xxzz;
+  float4 xyxx = (*tint_module_vars.P).v.xyxx;
+  float4 xyxy = (*tint_module_vars.P).v.xyxy;
+  float4 xyxz = (*tint_module_vars.P).v.xyxz;
+  float4 xyyx = (*tint_module_vars.P).v.xyyx;
+  float4 xyyy = (*tint_module_vars.P).v.xyyy;
+  float4 xyyz = (*tint_module_vars.P).v.xyyz;
+  float4 xyzx = (*tint_module_vars.P).v.xyzx;
+  float4 xyzy = (*tint_module_vars.P).v.xyzy;
+  float4 xyzz = (*tint_module_vars.P).v.xyzz;
+  float4 xzxx = (*tint_module_vars.P).v.xzxx;
+  float4 xzxy = (*tint_module_vars.P).v.xzxy;
+  float4 xzxz = (*tint_module_vars.P).v.xzxz;
+  float4 xzyx = (*tint_module_vars.P).v.xzyx;
+  float4 xzyy = (*tint_module_vars.P).v.xzyy;
+  float4 xzyz = (*tint_module_vars.P).v.xzyz;
+  float4 xzzx = (*tint_module_vars.P).v.xzzx;
+  float4 xzzy = (*tint_module_vars.P).v.xzzy;
+  float4 xzzz = (*tint_module_vars.P).v.xzzz;
+  float4 yxxx = (*tint_module_vars.P).v.yxxx;
+  float4 yxxy = (*tint_module_vars.P).v.yxxy;
+  float4 yxxz = (*tint_module_vars.P).v.yxxz;
+  float4 yxyx = (*tint_module_vars.P).v.yxyx;
+  float4 yxyy = (*tint_module_vars.P).v.yxyy;
+  float4 yxyz = (*tint_module_vars.P).v.yxyz;
+  float4 yxzx = (*tint_module_vars.P).v.yxzx;
+  float4 yxzy = (*tint_module_vars.P).v.yxzy;
+  float4 yxzz = (*tint_module_vars.P).v.yxzz;
+  float4 yyxx = (*tint_module_vars.P).v.yyxx;
+  float4 yyxy = (*tint_module_vars.P).v.yyxy;
+  float4 yyxz = (*tint_module_vars.P).v.yyxz;
+  float4 yyyx = (*tint_module_vars.P).v.yyyx;
+  float4 yyyy = (*tint_module_vars.P).v.yyyy;
+  float4 yyyz = (*tint_module_vars.P).v.yyyz;
+  float4 yyzx = (*tint_module_vars.P).v.yyzx;
+  float4 yyzy = (*tint_module_vars.P).v.yyzy;
+  float4 yyzz = (*tint_module_vars.P).v.yyzz;
+  float4 yzxx = (*tint_module_vars.P).v.yzxx;
+  float4 yzxy = (*tint_module_vars.P).v.yzxy;
+  float4 yzxz = (*tint_module_vars.P).v.yzxz;
+  float4 yzyx = (*tint_module_vars.P).v.yzyx;
+  float4 yzyy = (*tint_module_vars.P).v.yzyy;
+  float4 yzyz = (*tint_module_vars.P).v.yzyz;
+  float4 yzzx = (*tint_module_vars.P).v.yzzx;
+  float4 yzzy = (*tint_module_vars.P).v.yzzy;
+  float4 yzzz = (*tint_module_vars.P).v.yzzz;
+  float4 zxxx = (*tint_module_vars.P).v.zxxx;
+  float4 zxxy = (*tint_module_vars.P).v.zxxy;
+  float4 zxxz = (*tint_module_vars.P).v.zxxz;
+  float4 zxyx = (*tint_module_vars.P).v.zxyx;
+  float4 zxyy = (*tint_module_vars.P).v.zxyy;
+  float4 zxyz = (*tint_module_vars.P).v.zxyz;
+  float4 zxzx = (*tint_module_vars.P).v.zxzx;
+  float4 zxzy = (*tint_module_vars.P).v.zxzy;
+  float4 zxzz = (*tint_module_vars.P).v.zxzz;
+  float4 zyxx = (*tint_module_vars.P).v.zyxx;
+  float4 zyxy = (*tint_module_vars.P).v.zyxy;
+  float4 zyxz = (*tint_module_vars.P).v.zyxz;
+  float4 zyyx = (*tint_module_vars.P).v.zyyx;
+  float4 zyyy = (*tint_module_vars.P).v.zyyy;
+  float4 zyyz = (*tint_module_vars.P).v.zyyz;
+  float4 zyzx = (*tint_module_vars.P).v.zyzx;
+  float4 zyzy = (*tint_module_vars.P).v.zyzy;
+  float4 zyzz = (*tint_module_vars.P).v.zyzz;
+  float4 zzxx = (*tint_module_vars.P).v.zzxx;
+  float4 zzxy = (*tint_module_vars.P).v.zzxy;
+  float4 zzxz = (*tint_module_vars.P).v.zzxz;
+  float4 zzyx = (*tint_module_vars.P).v.zzyx;
+  float4 zzyy = (*tint_module_vars.P).v.zzyy;
+  float4 zzyz = (*tint_module_vars.P).v.zzyz;
+  float4 zzzx = (*tint_module_vars.P).v.zzzx;
+  float4 zzzy = (*tint_module_vars.P).v.zzzy;
+  float4 zzzz = (*tint_module_vars.P).v.zzzz;
 }
-program_source:7:10: error: program scope variable must reside in constant address space
-thread S P = {};
-         ^
-program_source:9:10: warning: unused variable 'v' [-Wunused-variable]
-  float3 v = P.v;
-         ^
-program_source:10:9: warning: unused variable 'x' [-Wunused-variable]
-  float x = P.v[0u];
-        ^
-program_source:11:9: warning: unused variable 'y' [-Wunused-variable]
-  float y = P.v[1u];
-        ^
-program_source:12:9: warning: unused variable 'z' [-Wunused-variable]
-  float z = P.v[2u];
-        ^
-program_source:13:10: warning: unused variable 'xx' [-Wunused-variable]
-  float2 xx = P.v.xx;
-         ^
-program_source:14:10: warning: unused variable 'xy' [-Wunused-variable]
-  float2 xy = P.v.xy;
-         ^
-program_source:15:10: warning: unused variable 'xz' [-Wunused-variable]
-  float2 xz = P.v.xz;
-         ^
-program_source:16:10: warning: unused variable 'yx' [-Wunused-variable]
-  float2 yx = P.v.yx;
-         ^
-program_source:17:10: warning: unused variable 'yy' [-Wunused-variable]
-  float2 yy = P.v.yy;
-         ^
-program_source:18:10: warning: unused variable 'yz' [-Wunused-variable]
-  float2 yz = P.v.yz;
-         ^
-program_source:19:10: warning: unused variable 'zx' [-Wunused-variable]
-  float2 zx = P.v.zx;
-         ^
-program_source:20:10: warning: unused variable 'zy' [-Wunused-variable]
-  float2 zy = P.v.zy;
-         ^
-program_source:21:10: warning: unused variable 'zz' [-Wunused-variable]
-  float2 zz = P.v.zz;
-         ^
-program_source:22:10: warning: unused variable 'xxx' [-Wunused-variable]
-  float3 xxx = P.v.xxx;
-         ^
-program_source:23:10: warning: unused variable 'xxy' [-Wunused-variable]
-  float3 xxy = P.v.xxy;
-         ^
-program_source:24:10: warning: unused variable 'xxz' [-Wunused-variable]
-  float3 xxz = P.v.xxz;
-         ^
-program_source:25:10: warning: unused variable 'xyx' [-Wunused-variable]
-  float3 xyx = P.v.xyx;
-         ^
-program_source:26:10: warning: unused variable 'xyy' [-Wunused-variable]
-  float3 xyy = P.v.xyy;
-         ^
-program_source:27:10: warning: unused variable 'xyz' [-Wunused-variable]
-  float3 xyz = P.v.xyz;
-         ^
-program_source:28:10: warning: unused variable 'xzx' [-Wunused-variable]
-  float3 xzx = P.v.xzx;
-         ^
-program_source:29:10: warning: unused variable 'xzy' [-Wunused-variable]
-  float3 xzy = P.v.xzy;
-         ^
-program_source:30:10: warning: unused variable 'xzz' [-Wunused-variable]
-  float3 xzz = P.v.xzz;
-         ^
-program_source:31:10: warning: unused variable 'yxx' [-Wunused-variable]
-  float3 yxx = P.v.yxx;
-         ^
-program_source:32:10: warning: unused variable 'yxy' [-Wunused-variable]
-  float3 yxy = P.v.yxy;
-         ^
-program_source:33:10: warning: unused variable 'yxz' [-Wunused-variable]
-  float3 yxz = P.v.yxz;
-         ^
-program_source:34:10: warning: unused variable 'yyx' [-Wunused-variable]
-  float3 yyx = P.v.yyx;
-         ^
-program_source:35:10: warning: unused variable 'yyy' [-Wunused-variable]
-  float3 yyy = P.v.yyy;
-         ^
-program_source:36:10: warning: unused variable 'yyz' [-Wunused-variable]
-  float3 yyz = P.v.yyz;
-         ^
-program_source:37:10: warning: unused variable 'yzx' [-Wunused-variable]
-  float3 yzx = P.v.yzx;
-         ^
-program_source:38:10: warning: unused variable 'yzy' [-Wunused-variable]
-  float3 yzy = P.v.yzy;
-         ^
-program_source:39:10: warning: unused variable 'yzz' [-Wunused-variable]
-  float3 yzz = P.v.yzz;
-         ^
-program_source:40:10: warning: unused variable 'zxx' [-Wunused-variable]
-  float3 zxx = P.v.zxx;
-         ^
-program_source:41:10: warning: unused variable 'zxy' [-Wunused-variable]
-  float3 zxy = P.v.zxy;
-         ^
-program_source:42:10: warning: unused variable 'zxz' [-Wunused-variable]
-  float3 zxz = P.v.zxz;
-         ^
-program_source:43:10: warning: unused variable 'zyx' [-Wunused-variable]
-  float3 zyx = P.v.zyx;
-         ^
-program_source:44:10: warning: unused variable 'zyy' [-Wunused-variable]
-  float3 zyy = P.v.zyy;
-         ^
-program_source:45:10: warning: unused variable 'zyz' [-Wunused-variable]
-  float3 zyz = P.v.zyz;
-         ^
-program_source:46:10: warning: unused variable 'zzx' [-Wunused-variable]
-  float3 zzx = P.v.zzx;
-         ^
-program_source:47:10: warning: unused variable 'zzy' [-Wunused-variable]
-  float3 zzy = P.v.zzy;
-         ^
-program_source:48:10: warning: unused variable 'zzz' [-Wunused-variable]
-  float3 zzz = P.v.zzz;
-         ^
-program_source:49:10: warning: unused variable 'xxxx' [-Wunused-variable]
-  float4 xxxx = P.v.xxxx;
-         ^
-program_source:50:10: warning: unused variable 'xxxy' [-Wunused-variable]
-  float4 xxxy = P.v.xxxy;
-         ^
-program_source:51:10: warning: unused variable 'xxxz' [-Wunused-variable]
-  float4 xxxz = P.v.xxxz;
-         ^
-program_source:52:10: warning: unused variable 'xxyx' [-Wunused-variable]
-  float4 xxyx = P.v.xxyx;
-         ^
-program_source:53:10: warning: unused variable 'xxyy' [-Wunused-variable]
-  float4 xxyy = P.v.xxyy;
-         ^
-program_source:54:10: warning: unused variable 'xxyz' [-Wunused-variable]
-  float4 xxyz = P.v.xxyz;
-         ^
-program_source:55:10: warning: unused variable 'xxzx' [-Wunused-variable]
-  float4 xxzx = P.v.xxzx;
-         ^
-program_source:56:10: warning: unused variable 'xxzy' [-Wunused-variable]
-  float4 xxzy = P.v.xxzy;
-         ^
-program_source:57:10: warning: unused variable 'xxzz' [-Wunused-variable]
-  float4 xxzz = P.v.xxzz;
-         ^
-program_source:58:10: warning: unused variable 'xyxx' [-Wunused-variable]
-  float4 xyxx = P.v.xyxx;
-         ^
-program_source:59:10: warning: unused variable 'xyxy' [-Wunused-variable]
-  float4 xyxy = P.v.xyxy;
-         ^
-program_source:60:10: warning: unused variable 'xyxz' [-Wunused-variable]
-  float4 xyxz = P.v.xyxz;
-         ^
-program_source:61:10: warning: unused variable 'xyyx' [-Wunused-variable]
-  float4 xyyx = P.v.xyyx;
-         ^
-program_source:62:10: warning: unused variable 'xyyy' [-Wunused-variable]
-  float4 xyyy = P.v.xyyy;
-         ^
-program_source:63:10: warning: unused variable 'xyyz' [-Wunused-variable]
-  float4 xyyz = P.v.xyyz;
-         ^
-program_source:64:10: warning: unused variable 'xyzx' [-Wunused-variable]
-  float4 xyzx = P.v.xyzx;
-         ^
-program_source:65:10: warning: unused variable 'xyzy' [-Wunused-variable]
-  float4 xyzy = P.v.xyzy;
-         ^
-program_source:66:10: warning: unused variable 'xyzz' [-Wunused-variable]
-  float4 xyzz = P.v.xyzz;
-         ^
-program_source:67:10: warning: unused variable 'xzxx' [-Wunused-variable]
-  float4 xzxx = P.v.xzxx;
-         ^
-program_source:68:10: warning: unused variable 'xzxy' [-Wunused-variable]
-  float4 xzxy = P.v.xzxy;
-         ^
-program_source:69:10: warning: unused variable 'xzxz' [-Wunused-variable]
-  float4 xzxz = P.v.xzxz;
-         ^
-program_source:70:10: warning: unused variable 'xzyx' [-Wunused-variable]
-  float4 xzyx = P.v.xzyx;
-         ^
-program_source:71:10: warning: unused variable 'xzyy' [-Wunused-variable]
-  float4 xzyy = P.v.xzyy;
-         ^
-program_source:72:10: warning: unused variable 'xzyz' [-Wunused-variable]
-  float4 xzyz = P.v.xzyz;
-         ^
-program_source:73:10: warning: unused variable 'xzzx' [-Wunused-variable]
-  float4 xzzx = P.v.xzzx;
-         ^
-program_source:74:10: warning: unused variable 'xzzy' [-Wunused-variable]
-  float4 xzzy = P.v.xzzy;
-         ^
-program_source:75:10: warning: unused variable 'xzzz' [-Wunused-variable]
-  float4 xzzz = P.v.xzzz;
-         ^
-program_source:76:10: warning: unused variable 'yxxx' [-Wunused-variable]
-  float4 yxxx = P.v.yxxx;
-         ^
-program_source:77:10: warning: unused variable 'yxxy' [-Wunused-variable]
-  float4 yxxy = P.v.yxxy;
-         ^
-program_source:78:10: warning: unused variable 'yxxz' [-Wunused-variable]
-  float4 yxxz = P.v.yxxz;
-         ^
-program_source:79:10: warning: unused variable 'yxyx' [-Wunused-variable]
-  float4 yxyx = P.v.yxyx;
-         ^
-program_source:80:10: warning: unused variable 'yxyy' [-Wunused-variable]
-  float4 yxyy = P.v.yxyy;
-         ^
-program_source:81:10: warning: unused variable 'yxyz' [-Wunused-variable]
-  float4 yxyz = P.v.yxyz;
-         ^
-program_source:82:10: warning: unused variable 'yxzx' [-Wunused-variable]
-  float4 yxzx = P.v.yxzx;
-         ^
-program_source:83:10: warning: unused variable 'yxzy' [-Wunused-variable]
-  float4 yxzy = P.v.yxzy;
-         ^
-program_source:84:10: warning: unused variable 'yxzz' [-Wunused-variable]
-  float4 yxzz = P.v.yxzz;
-         ^
-program_source:85:10: warning: unused variable 'yyxx' [-Wunused-variable]
-  float4 yyxx = P.v.yyxx;
-         ^
-program_source:86:10: warning: unused variable 'yyxy' [-Wunused-variable]
-  float4 yyxy = P.v.yyxy;
-         ^
-program_source:87:10: warning: unused variable 'yyxz' [-Wunused-variable]
-  float4 yyxz = P.v.yyxz;
-         ^
-program_source:88:10: warning: unused variable 'yyyx' [-Wunused-variable]
-  float4 yyyx = P.v.yyyx;
-         ^
-program_source:89:10: warning: unused variable 'yyyy' [-Wunused-variable]
-  float4 yyyy = P.v.yyyy;
-         ^
-program_source:90:10: warning: unused variable 'yyyz' [-Wunused-variable]
-  float4 yyyz = P.v.yyyz;
-         ^
-program_source:91:10: warning: unused variable 'yyzx' [-Wunused-variable]
-  float4 yyzx = P.v.yyzx;
-         ^
-program_source:92:10: warning: unused variable 'yyzy' [-Wunused-variable]
-  float4 yyzy = P.v.yyzy;
-         ^
-program_source:93:10: warning: unused variable 'yyzz' [-Wunused-variable]
-  float4 yyzz = P.v.yyzz;
-         ^
-program_source:94:10: warning: unused variable 'yzxx' [-Wunused-variable]
-  float4 yzxx = P.v.yzxx;
-         ^
-program_source:95:10: warning: unused variable 'yzxy' [-Wunused-variable]
-  float4 yzxy = P.v.yzxy;
-         ^
-program_source:96:10: warning: unused variable 'yzxz' [-Wunused-variable]
-  float4 yzxz = P.v.yzxz;
-         ^
-program_source:97:10: warning: unused variable 'yzyx' [-Wunused-variable]
-  float4 yzyx = P.v.yzyx;
-         ^
-program_source:98:10: warning: unused variable 'yzyy' [-Wunused-variable]
-  float4 yzyy = P.v.yzyy;
-         ^
-program_source:99:10: warning: unused variable 'yzyz' [-Wunused-variable]
-  float4 yzyz = P.v.yzyz;
-         ^
-program_source:100:10: warning: unused variable 'yzzx' [-Wunused-variable]
-  float4 yzzx = P.v.yzzx;
-         ^
-program_source:101:10: warning: unused variable 'yzzy' [-Wunused-variable]
-  float4 yzzy = P.v.yzzy;
-         ^
-program_source:102:10: warning: unused variable 'yzzz' [-Wunused-variable]
-  float4 yzzz = P.v.yzzz;
-         ^
-program_source:103:10: warning: unused variable 'zxxx' [-Wunused-variable]
-  float4 zxxx = P.v.zxxx;
-         ^
-program_source:104:10: warning: unused variable 'zxxy' [-Wunused-variable]
-  float4 zxxy = P.v.zxxy;
-         ^
-program_source:105:10: warning: unused variable 'zxxz' [-Wunused-variable]
-  float4 zxxz = P.v.zxxz;
-         ^
-program_source:106:10: warning: unused variable 'zxyx' [-Wunused-variable]
-  float4 zxyx = P.v.zxyx;
-         ^
-program_source:107:10: warning: unused variable 'zxyy' [-Wunused-variable]
-  float4 zxyy = P.v.zxyy;
-         ^
-program_source:108:10: warning: unused variable 'zxyz' [-Wunused-variable]
-  float4 zxyz = P.v.zxyz;
-         ^
-program_source:109:10: warning: unused variable 'zxzx' [-Wunused-variable]
-  float4 zxzx = P.v.zxzx;
-         ^
-program_source:110:10: warning: unused variable 'zxzy' [-Wunused-variable]
-  float4 zxzy = P.v.zxzy;
-         ^
-program_source:111:10: warning: unused variable 'zxzz' [-Wunused-variable]
-  float4 zxzz = P.v.zxzz;
-         ^
-program_source:112:10: warning: unused variable 'zyxx' [-Wunused-variable]
-  float4 zyxx = P.v.zyxx;
-         ^
-program_source:113:10: warning: unused variable 'zyxy' [-Wunused-variable]
-  float4 zyxy = P.v.zyxy;
-         ^
-program_source:114:10: warning: unused variable 'zyxz' [-Wunused-variable]
-  float4 zyxz = P.v.zyxz;
-         ^
-program_source:115:10: warning: unused variable 'zyyx' [-Wunused-variable]
-  float4 zyyx = P.v.zyyx;
-         ^
-program_source:116:10: warning: unused variable 'zyyy' [-Wunused-variable]
-  float4 zyyy = P.v.zyyy;
-         ^
-program_source:117:10: warning: unused variable 'zyyz' [-Wunused-variable]
-  float4 zyyz = P.v.zyyz;
-         ^
-program_source:118:10: warning: unused variable 'zyzx' [-Wunused-variable]
-  float4 zyzx = P.v.zyzx;
-         ^
-program_source:119:10: warning: unused variable 'zyzy' [-Wunused-variable]
-  float4 zyzy = P.v.zyzy;
-         ^
-program_source:120:10: warning: unused variable 'zyzz' [-Wunused-variable]
-  float4 zyzz = P.v.zyzz;
-         ^
-program_source:121:10: warning: unused variable 'zzxx' [-Wunused-variable]
-  float4 zzxx = P.v.zzxx;
-         ^
-program_source:122:10: warning: unused variable 'zzxy' [-Wunused-variable]
-  float4 zzxy = P.v.zzxy;
-         ^
-program_source:123:10: warning: unused variable 'zzxz' [-Wunused-variable]
-  float4 zzxz = P.v.zzxz;
-         ^
-program_source:124:10: warning: unused variable 'zzyx' [-Wunused-variable]
-  float4 zzyx = P.v.zzyx;
-         ^
-program_source:125:10: warning: unused variable 'zzyy' [-Wunused-variable]
-  float4 zzyy = P.v.zzyy;
-         ^
-program_source:126:10: warning: unused variable 'zzyz' [-Wunused-variable]
-  float4 zzyz = P.v.zzyz;
-         ^
-program_source:127:10: warning: unused variable 'zzzx' [-Wunused-variable]
-  float4 zzzx = P.v.zzzx;
-         ^
-program_source:128:10: warning: unused variable 'zzzy' [-Wunused-variable]
-  float4 zzzy = P.v.zzzy;
-         ^
-program_source:129:10: warning: unused variable 'zzzz' [-Wunused-variable]
-  float4 zzzz = P.v.zzzz;
-         ^
-
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
index f8f1803..c9f1cc0 100644
--- a/test/tint/expressions/swizzle/read/vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/swizzle/read/vec3/i32.wgsl.expected.ir.msl
@@ -1,499 +1,132 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct S {
   int3 v;
 };
+struct tint_module_vars_struct {
+  thread S* P;
+};
 
-thread S P = {};
-void f() {
-  int3 v = P.v;
-  int x = P.v[0u];
-  int y = P.v[1u];
-  int z = P.v[2u];
-  int2 xx = P.v.xx;
-  int2 xy = P.v.xy;
-  int2 xz = P.v.xz;
-  int2 yx = P.v.yx;
-  int2 yy = P.v.yy;
-  int2 yz = P.v.yz;
-  int2 zx = P.v.zx;
-  int2 zy = P.v.zy;
-  int2 zz = P.v.zz;
-  int3 xxx = P.v.xxx;
-  int3 xxy = P.v.xxy;
-  int3 xxz = P.v.xxz;
-  int3 xyx = P.v.xyx;
-  int3 xyy = P.v.xyy;
-  int3 xyz = P.v.xyz;
-  int3 xzx = P.v.xzx;
-  int3 xzy = P.v.xzy;
-  int3 xzz = P.v.xzz;
-  int3 yxx = P.v.yxx;
-  int3 yxy = P.v.yxy;
-  int3 yxz = P.v.yxz;
-  int3 yyx = P.v.yyx;
-  int3 yyy = P.v.yyy;
-  int3 yyz = P.v.yyz;
-  int3 yzx = P.v.yzx;
-  int3 yzy = P.v.yzy;
-  int3 yzz = P.v.yzz;
-  int3 zxx = P.v.zxx;
-  int3 zxy = P.v.zxy;
-  int3 zxz = P.v.zxz;
-  int3 zyx = P.v.zyx;
-  int3 zyy = P.v.zyy;
-  int3 zyz = P.v.zyz;
-  int3 zzx = P.v.zzx;
-  int3 zzy = P.v.zzy;
-  int3 zzz = P.v.zzz;
-  int4 xxxx = P.v.xxxx;
-  int4 xxxy = P.v.xxxy;
-  int4 xxxz = P.v.xxxz;
-  int4 xxyx = P.v.xxyx;
-  int4 xxyy = P.v.xxyy;
-  int4 xxyz = P.v.xxyz;
-  int4 xxzx = P.v.xxzx;
-  int4 xxzy = P.v.xxzy;
-  int4 xxzz = P.v.xxzz;
-  int4 xyxx = P.v.xyxx;
-  int4 xyxy = P.v.xyxy;
-  int4 xyxz = P.v.xyxz;
-  int4 xyyx = P.v.xyyx;
-  int4 xyyy = P.v.xyyy;
-  int4 xyyz = P.v.xyyz;
-  int4 xyzx = P.v.xyzx;
-  int4 xyzy = P.v.xyzy;
-  int4 xyzz = P.v.xyzz;
-  int4 xzxx = P.v.xzxx;
-  int4 xzxy = P.v.xzxy;
-  int4 xzxz = P.v.xzxz;
-  int4 xzyx = P.v.xzyx;
-  int4 xzyy = P.v.xzyy;
-  int4 xzyz = P.v.xzyz;
-  int4 xzzx = P.v.xzzx;
-  int4 xzzy = P.v.xzzy;
-  int4 xzzz = P.v.xzzz;
-  int4 yxxx = P.v.yxxx;
-  int4 yxxy = P.v.yxxy;
-  int4 yxxz = P.v.yxxz;
-  int4 yxyx = P.v.yxyx;
-  int4 yxyy = P.v.yxyy;
-  int4 yxyz = P.v.yxyz;
-  int4 yxzx = P.v.yxzx;
-  int4 yxzy = P.v.yxzy;
-  int4 yxzz = P.v.yxzz;
-  int4 yyxx = P.v.yyxx;
-  int4 yyxy = P.v.yyxy;
-  int4 yyxz = P.v.yyxz;
-  int4 yyyx = P.v.yyyx;
-  int4 yyyy = P.v.yyyy;
-  int4 yyyz = P.v.yyyz;
-  int4 yyzx = P.v.yyzx;
-  int4 yyzy = P.v.yyzy;
-  int4 yyzz = P.v.yyzz;
-  int4 yzxx = P.v.yzxx;
-  int4 yzxy = P.v.yzxy;
-  int4 yzxz = P.v.yzxz;
-  int4 yzyx = P.v.yzyx;
-  int4 yzyy = P.v.yzyy;
-  int4 yzyz = P.v.yzyz;
-  int4 yzzx = P.v.yzzx;
-  int4 yzzy = P.v.yzzy;
-  int4 yzzz = P.v.yzzz;
-  int4 zxxx = P.v.zxxx;
-  int4 zxxy = P.v.zxxy;
-  int4 zxxz = P.v.zxxz;
-  int4 zxyx = P.v.zxyx;
-  int4 zxyy = P.v.zxyy;
-  int4 zxyz = P.v.zxyz;
-  int4 zxzx = P.v.zxzx;
-  int4 zxzy = P.v.zxzy;
-  int4 zxzz = P.v.zxzz;
-  int4 zyxx = P.v.zyxx;
-  int4 zyxy = P.v.zyxy;
-  int4 zyxz = P.v.zyxz;
-  int4 zyyx = P.v.zyyx;
-  int4 zyyy = P.v.zyyy;
-  int4 zyyz = P.v.zyyz;
-  int4 zyzx = P.v.zyzx;
-  int4 zyzy = P.v.zyzy;
-  int4 zyzz = P.v.zyzz;
-  int4 zzxx = P.v.zzxx;
-  int4 zzxy = P.v.zzxy;
-  int4 zzxz = P.v.zzxz;
-  int4 zzyx = P.v.zzyx;
-  int4 zzyy = P.v.zzyy;
-  int4 zzyz = P.v.zzyz;
-  int4 zzzx = P.v.zzzx;
-  int4 zzzy = P.v.zzzy;
-  int4 zzzz = P.v.zzzz;
+void f(tint_module_vars_struct tint_module_vars) {
+  int3 v = (*tint_module_vars.P).v;
+  int x = (*tint_module_vars.P).v[0u];
+  int y = (*tint_module_vars.P).v[1u];
+  int z = (*tint_module_vars.P).v[2u];
+  int2 xx = (*tint_module_vars.P).v.xx;
+  int2 xy = (*tint_module_vars.P).v.xy;
+  int2 xz = (*tint_module_vars.P).v.xz;
+  int2 yx = (*tint_module_vars.P).v.yx;
+  int2 yy = (*tint_module_vars.P).v.yy;
+  int2 yz = (*tint_module_vars.P).v.yz;
+  int2 zx = (*tint_module_vars.P).v.zx;
+  int2 zy = (*tint_module_vars.P).v.zy;
+  int2 zz = (*tint_module_vars.P).v.zz;
+  int3 xxx = (*tint_module_vars.P).v.xxx;
+  int3 xxy = (*tint_module_vars.P).v.xxy;
+  int3 xxz = (*tint_module_vars.P).v.xxz;
+  int3 xyx = (*tint_module_vars.P).v.xyx;
+  int3 xyy = (*tint_module_vars.P).v.xyy;
+  int3 xyz = (*tint_module_vars.P).v.xyz;
+  int3 xzx = (*tint_module_vars.P).v.xzx;
+  int3 xzy = (*tint_module_vars.P).v.xzy;
+  int3 xzz = (*tint_module_vars.P).v.xzz;
+  int3 yxx = (*tint_module_vars.P).v.yxx;
+  int3 yxy = (*tint_module_vars.P).v.yxy;
+  int3 yxz = (*tint_module_vars.P).v.yxz;
+  int3 yyx = (*tint_module_vars.P).v.yyx;
+  int3 yyy = (*tint_module_vars.P).v.yyy;
+  int3 yyz = (*tint_module_vars.P).v.yyz;
+  int3 yzx = (*tint_module_vars.P).v.yzx;
+  int3 yzy = (*tint_module_vars.P).v.yzy;
+  int3 yzz = (*tint_module_vars.P).v.yzz;
+  int3 zxx = (*tint_module_vars.P).v.zxx;
+  int3 zxy = (*tint_module_vars.P).v.zxy;
+  int3 zxz = (*tint_module_vars.P).v.zxz;
+  int3 zyx = (*tint_module_vars.P).v.zyx;
+  int3 zyy = (*tint_module_vars.P).v.zyy;
+  int3 zyz = (*tint_module_vars.P).v.zyz;
+  int3 zzx = (*tint_module_vars.P).v.zzx;
+  int3 zzy = (*tint_module_vars.P).v.zzy;
+  int3 zzz = (*tint_module_vars.P).v.zzz;
+  int4 xxxx = (*tint_module_vars.P).v.xxxx;
+  int4 xxxy = (*tint_module_vars.P).v.xxxy;
+  int4 xxxz = (*tint_module_vars.P).v.xxxz;
+  int4 xxyx = (*tint_module_vars.P).v.xxyx;
+  int4 xxyy = (*tint_module_vars.P).v.xxyy;
+  int4 xxyz = (*tint_module_vars.P).v.xxyz;
+  int4 xxzx = (*tint_module_vars.P).v.xxzx;
+  int4 xxzy = (*tint_module_vars.P).v.xxzy;
+  int4 xxzz = (*tint_module_vars.P).v.xxzz;
+  int4 xyxx = (*tint_module_vars.P).v.xyxx;
+  int4 xyxy = (*tint_module_vars.P).v.xyxy;
+  int4 xyxz = (*tint_module_vars.P).v.xyxz;
+  int4 xyyx = (*tint_module_vars.P).v.xyyx;
+  int4 xyyy = (*tint_module_vars.P).v.xyyy;
+  int4 xyyz = (*tint_module_vars.P).v.xyyz;
+  int4 xyzx = (*tint_module_vars.P).v.xyzx;
+  int4 xyzy = (*tint_module_vars.P).v.xyzy;
+  int4 xyzz = (*tint_module_vars.P).v.xyzz;
+  int4 xzxx = (*tint_module_vars.P).v.xzxx;
+  int4 xzxy = (*tint_module_vars.P).v.xzxy;
+  int4 xzxz = (*tint_module_vars.P).v.xzxz;
+  int4 xzyx = (*tint_module_vars.P).v.xzyx;
+  int4 xzyy = (*tint_module_vars.P).v.xzyy;
+  int4 xzyz = (*tint_module_vars.P).v.xzyz;
+  int4 xzzx = (*tint_module_vars.P).v.xzzx;
+  int4 xzzy = (*tint_module_vars.P).v.xzzy;
+  int4 xzzz = (*tint_module_vars.P).v.xzzz;
+  int4 yxxx = (*tint_module_vars.P).v.yxxx;
+  int4 yxxy = (*tint_module_vars.P).v.yxxy;
+  int4 yxxz = (*tint_module_vars.P).v.yxxz;
+  int4 yxyx = (*tint_module_vars.P).v.yxyx;
+  int4 yxyy = (*tint_module_vars.P).v.yxyy;
+  int4 yxyz = (*tint_module_vars.P).v.yxyz;
+  int4 yxzx = (*tint_module_vars.P).v.yxzx;
+  int4 yxzy = (*tint_module_vars.P).v.yxzy;
+  int4 yxzz = (*tint_module_vars.P).v.yxzz;
+  int4 yyxx = (*tint_module_vars.P).v.yyxx;
+  int4 yyxy = (*tint_module_vars.P).v.yyxy;
+  int4 yyxz = (*tint_module_vars.P).v.yyxz;
+  int4 yyyx = (*tint_module_vars.P).v.yyyx;
+  int4 yyyy = (*tint_module_vars.P).v.yyyy;
+  int4 yyyz = (*tint_module_vars.P).v.yyyz;
+  int4 yyzx = (*tint_module_vars.P).v.yyzx;
+  int4 yyzy = (*tint_module_vars.P).v.yyzy;
+  int4 yyzz = (*tint_module_vars.P).v.yyzz;
+  int4 yzxx = (*tint_module_vars.P).v.yzxx;
+  int4 yzxy = (*tint_module_vars.P).v.yzxy;
+  int4 yzxz = (*tint_module_vars.P).v.yzxz;
+  int4 yzyx = (*tint_module_vars.P).v.yzyx;
+  int4 yzyy = (*tint_module_vars.P).v.yzyy;
+  int4 yzyz = (*tint_module_vars.P).v.yzyz;
+  int4 yzzx = (*tint_module_vars.P).v.yzzx;
+  int4 yzzy = (*tint_module_vars.P).v.yzzy;
+  int4 yzzz = (*tint_module_vars.P).v.yzzz;
+  int4 zxxx = (*tint_module_vars.P).v.zxxx;
+  int4 zxxy = (*tint_module_vars.P).v.zxxy;
+  int4 zxxz = (*tint_module_vars.P).v.zxxz;
+  int4 zxyx = (*tint_module_vars.P).v.zxyx;
+  int4 zxyy = (*tint_module_vars.P).v.zxyy;
+  int4 zxyz = (*tint_module_vars.P).v.zxyz;
+  int4 zxzx = (*tint_module_vars.P).v.zxzx;
+  int4 zxzy = (*tint_module_vars.P).v.zxzy;
+  int4 zxzz = (*tint_module_vars.P).v.zxzz;
+  int4 zyxx = (*tint_module_vars.P).v.zyxx;
+  int4 zyxy = (*tint_module_vars.P).v.zyxy;
+  int4 zyxz = (*tint_module_vars.P).v.zyxz;
+  int4 zyyx = (*tint_module_vars.P).v.zyyx;
+  int4 zyyy = (*tint_module_vars.P).v.zyyy;
+  int4 zyyz = (*tint_module_vars.P).v.zyyz;
+  int4 zyzx = (*tint_module_vars.P).v.zyzx;
+  int4 zyzy = (*tint_module_vars.P).v.zyzy;
+  int4 zyzz = (*tint_module_vars.P).v.zyzz;
+  int4 zzxx = (*tint_module_vars.P).v.zzxx;
+  int4 zzxy = (*tint_module_vars.P).v.zzxy;
+  int4 zzxz = (*tint_module_vars.P).v.zzxz;
+  int4 zzyx = (*tint_module_vars.P).v.zzyx;
+  int4 zzyy = (*tint_module_vars.P).v.zzyy;
+  int4 zzyz = (*tint_module_vars.P).v.zzyz;
+  int4 zzzx = (*tint_module_vars.P).v.zzzx;
+  int4 zzzy = (*tint_module_vars.P).v.zzzy;
+  int4 zzzz = (*tint_module_vars.P).v.zzzz;
 }
-program_source:7:10: error: program scope variable must reside in constant address space
-thread S P = {};
-         ^
-program_source:9:8: warning: unused variable 'v' [-Wunused-variable]
-  int3 v = P.v;
-       ^
-program_source:10:7: warning: unused variable 'x' [-Wunused-variable]
-  int x = P.v[0u];
-      ^
-program_source:11:7: warning: unused variable 'y' [-Wunused-variable]
-  int y = P.v[1u];
-      ^
-program_source:12:7: warning: unused variable 'z' [-Wunused-variable]
-  int z = P.v[2u];
-      ^
-program_source:13:8: warning: unused variable 'xx' [-Wunused-variable]
-  int2 xx = P.v.xx;
-       ^
-program_source:14:8: warning: unused variable 'xy' [-Wunused-variable]
-  int2 xy = P.v.xy;
-       ^
-program_source:15:8: warning: unused variable 'xz' [-Wunused-variable]
-  int2 xz = P.v.xz;
-       ^
-program_source:16:8: warning: unused variable 'yx' [-Wunused-variable]
-  int2 yx = P.v.yx;
-       ^
-program_source:17:8: warning: unused variable 'yy' [-Wunused-variable]
-  int2 yy = P.v.yy;
-       ^
-program_source:18:8: warning: unused variable 'yz' [-Wunused-variable]
-  int2 yz = P.v.yz;
-       ^
-program_source:19:8: warning: unused variable 'zx' [-Wunused-variable]
-  int2 zx = P.v.zx;
-       ^
-program_source:20:8: warning: unused variable 'zy' [-Wunused-variable]
-  int2 zy = P.v.zy;
-       ^
-program_source:21:8: warning: unused variable 'zz' [-Wunused-variable]
-  int2 zz = P.v.zz;
-       ^
-program_source:22:8: warning: unused variable 'xxx' [-Wunused-variable]
-  int3 xxx = P.v.xxx;
-       ^
-program_source:23:8: warning: unused variable 'xxy' [-Wunused-variable]
-  int3 xxy = P.v.xxy;
-       ^
-program_source:24:8: warning: unused variable 'xxz' [-Wunused-variable]
-  int3 xxz = P.v.xxz;
-       ^
-program_source:25:8: warning: unused variable 'xyx' [-Wunused-variable]
-  int3 xyx = P.v.xyx;
-       ^
-program_source:26:8: warning: unused variable 'xyy' [-Wunused-variable]
-  int3 xyy = P.v.xyy;
-       ^
-program_source:27:8: warning: unused variable 'xyz' [-Wunused-variable]
-  int3 xyz = P.v.xyz;
-       ^
-program_source:28:8: warning: unused variable 'xzx' [-Wunused-variable]
-  int3 xzx = P.v.xzx;
-       ^
-program_source:29:8: warning: unused variable 'xzy' [-Wunused-variable]
-  int3 xzy = P.v.xzy;
-       ^
-program_source:30:8: warning: unused variable 'xzz' [-Wunused-variable]
-  int3 xzz = P.v.xzz;
-       ^
-program_source:31:8: warning: unused variable 'yxx' [-Wunused-variable]
-  int3 yxx = P.v.yxx;
-       ^
-program_source:32:8: warning: unused variable 'yxy' [-Wunused-variable]
-  int3 yxy = P.v.yxy;
-       ^
-program_source:33:8: warning: unused variable 'yxz' [-Wunused-variable]
-  int3 yxz = P.v.yxz;
-       ^
-program_source:34:8: warning: unused variable 'yyx' [-Wunused-variable]
-  int3 yyx = P.v.yyx;
-       ^
-program_source:35:8: warning: unused variable 'yyy' [-Wunused-variable]
-  int3 yyy = P.v.yyy;
-       ^
-program_source:36:8: warning: unused variable 'yyz' [-Wunused-variable]
-  int3 yyz = P.v.yyz;
-       ^
-program_source:37:8: warning: unused variable 'yzx' [-Wunused-variable]
-  int3 yzx = P.v.yzx;
-       ^
-program_source:38:8: warning: unused variable 'yzy' [-Wunused-variable]
-  int3 yzy = P.v.yzy;
-       ^
-program_source:39:8: warning: unused variable 'yzz' [-Wunused-variable]
-  int3 yzz = P.v.yzz;
-       ^
-program_source:40:8: warning: unused variable 'zxx' [-Wunused-variable]
-  int3 zxx = P.v.zxx;
-       ^
-program_source:41:8: warning: unused variable 'zxy' [-Wunused-variable]
-  int3 zxy = P.v.zxy;
-       ^
-program_source:42:8: warning: unused variable 'zxz' [-Wunused-variable]
-  int3 zxz = P.v.zxz;
-       ^
-program_source:43:8: warning: unused variable 'zyx' [-Wunused-variable]
-  int3 zyx = P.v.zyx;
-       ^
-program_source:44:8: warning: unused variable 'zyy' [-Wunused-variable]
-  int3 zyy = P.v.zyy;
-       ^
-program_source:45:8: warning: unused variable 'zyz' [-Wunused-variable]
-  int3 zyz = P.v.zyz;
-       ^
-program_source:46:8: warning: unused variable 'zzx' [-Wunused-variable]
-  int3 zzx = P.v.zzx;
-       ^
-program_source:47:8: warning: unused variable 'zzy' [-Wunused-variable]
-  int3 zzy = P.v.zzy;
-       ^
-program_source:48:8: warning: unused variable 'zzz' [-Wunused-variable]
-  int3 zzz = P.v.zzz;
-       ^
-program_source:49:8: warning: unused variable 'xxxx' [-Wunused-variable]
-  int4 xxxx = P.v.xxxx;
-       ^
-program_source:50:8: warning: unused variable 'xxxy' [-Wunused-variable]
-  int4 xxxy = P.v.xxxy;
-       ^
-program_source:51:8: warning: unused variable 'xxxz' [-Wunused-variable]
-  int4 xxxz = P.v.xxxz;
-       ^
-program_source:52:8: warning: unused variable 'xxyx' [-Wunused-variable]
-  int4 xxyx = P.v.xxyx;
-       ^
-program_source:53:8: warning: unused variable 'xxyy' [-Wunused-variable]
-  int4 xxyy = P.v.xxyy;
-       ^
-program_source:54:8: warning: unused variable 'xxyz' [-Wunused-variable]
-  int4 xxyz = P.v.xxyz;
-       ^
-program_source:55:8: warning: unused variable 'xxzx' [-Wunused-variable]
-  int4 xxzx = P.v.xxzx;
-       ^
-program_source:56:8: warning: unused variable 'xxzy' [-Wunused-variable]
-  int4 xxzy = P.v.xxzy;
-       ^
-program_source:57:8: warning: unused variable 'xxzz' [-Wunused-variable]
-  int4 xxzz = P.v.xxzz;
-       ^
-program_source:58:8: warning: unused variable 'xyxx' [-Wunused-variable]
-  int4 xyxx = P.v.xyxx;
-       ^
-program_source:59:8: warning: unused variable 'xyxy' [-Wunused-variable]
-  int4 xyxy = P.v.xyxy;
-       ^
-program_source:60:8: warning: unused variable 'xyxz' [-Wunused-variable]
-  int4 xyxz = P.v.xyxz;
-       ^
-program_source:61:8: warning: unused variable 'xyyx' [-Wunused-variable]
-  int4 xyyx = P.v.xyyx;
-       ^
-program_source:62:8: warning: unused variable 'xyyy' [-Wunused-variable]
-  int4 xyyy = P.v.xyyy;
-       ^
-program_source:63:8: warning: unused variable 'xyyz' [-Wunused-variable]
-  int4 xyyz = P.v.xyyz;
-       ^
-program_source:64:8: warning: unused variable 'xyzx' [-Wunused-variable]
-  int4 xyzx = P.v.xyzx;
-       ^
-program_source:65:8: warning: unused variable 'xyzy' [-Wunused-variable]
-  int4 xyzy = P.v.xyzy;
-       ^
-program_source:66:8: warning: unused variable 'xyzz' [-Wunused-variable]
-  int4 xyzz = P.v.xyzz;
-       ^
-program_source:67:8: warning: unused variable 'xzxx' [-Wunused-variable]
-  int4 xzxx = P.v.xzxx;
-       ^
-program_source:68:8: warning: unused variable 'xzxy' [-Wunused-variable]
-  int4 xzxy = P.v.xzxy;
-       ^
-program_source:69:8: warning: unused variable 'xzxz' [-Wunused-variable]
-  int4 xzxz = P.v.xzxz;
-       ^
-program_source:70:8: warning: unused variable 'xzyx' [-Wunused-variable]
-  int4 xzyx = P.v.xzyx;
-       ^
-program_source:71:8: warning: unused variable 'xzyy' [-Wunused-variable]
-  int4 xzyy = P.v.xzyy;
-       ^
-program_source:72:8: warning: unused variable 'xzyz' [-Wunused-variable]
-  int4 xzyz = P.v.xzyz;
-       ^
-program_source:73:8: warning: unused variable 'xzzx' [-Wunused-variable]
-  int4 xzzx = P.v.xzzx;
-       ^
-program_source:74:8: warning: unused variable 'xzzy' [-Wunused-variable]
-  int4 xzzy = P.v.xzzy;
-       ^
-program_source:75:8: warning: unused variable 'xzzz' [-Wunused-variable]
-  int4 xzzz = P.v.xzzz;
-       ^
-program_source:76:8: warning: unused variable 'yxxx' [-Wunused-variable]
-  int4 yxxx = P.v.yxxx;
-       ^
-program_source:77:8: warning: unused variable 'yxxy' [-Wunused-variable]
-  int4 yxxy = P.v.yxxy;
-       ^
-program_source:78:8: warning: unused variable 'yxxz' [-Wunused-variable]
-  int4 yxxz = P.v.yxxz;
-       ^
-program_source:79:8: warning: unused variable 'yxyx' [-Wunused-variable]
-  int4 yxyx = P.v.yxyx;
-       ^
-program_source:80:8: warning: unused variable 'yxyy' [-Wunused-variable]
-  int4 yxyy = P.v.yxyy;
-       ^
-program_source:81:8: warning: unused variable 'yxyz' [-Wunused-variable]
-  int4 yxyz = P.v.yxyz;
-       ^
-program_source:82:8: warning: unused variable 'yxzx' [-Wunused-variable]
-  int4 yxzx = P.v.yxzx;
-       ^
-program_source:83:8: warning: unused variable 'yxzy' [-Wunused-variable]
-  int4 yxzy = P.v.yxzy;
-       ^
-program_source:84:8: warning: unused variable 'yxzz' [-Wunused-variable]
-  int4 yxzz = P.v.yxzz;
-       ^
-program_source:85:8: warning: unused variable 'yyxx' [-Wunused-variable]
-  int4 yyxx = P.v.yyxx;
-       ^
-program_source:86:8: warning: unused variable 'yyxy' [-Wunused-variable]
-  int4 yyxy = P.v.yyxy;
-       ^
-program_source:87:8: warning: unused variable 'yyxz' [-Wunused-variable]
-  int4 yyxz = P.v.yyxz;
-       ^
-program_source:88:8: warning: unused variable 'yyyx' [-Wunused-variable]
-  int4 yyyx = P.v.yyyx;
-       ^
-program_source:89:8: warning: unused variable 'yyyy' [-Wunused-variable]
-  int4 yyyy = P.v.yyyy;
-       ^
-program_source:90:8: warning: unused variable 'yyyz' [-Wunused-variable]
-  int4 yyyz = P.v.yyyz;
-       ^
-program_source:91:8: warning: unused variable 'yyzx' [-Wunused-variable]
-  int4 yyzx = P.v.yyzx;
-       ^
-program_source:92:8: warning: unused variable 'yyzy' [-Wunused-variable]
-  int4 yyzy = P.v.yyzy;
-       ^
-program_source:93:8: warning: unused variable 'yyzz' [-Wunused-variable]
-  int4 yyzz = P.v.yyzz;
-       ^
-program_source:94:8: warning: unused variable 'yzxx' [-Wunused-variable]
-  int4 yzxx = P.v.yzxx;
-       ^
-program_source:95:8: warning: unused variable 'yzxy' [-Wunused-variable]
-  int4 yzxy = P.v.yzxy;
-       ^
-program_source:96:8: warning: unused variable 'yzxz' [-Wunused-variable]
-  int4 yzxz = P.v.yzxz;
-       ^
-program_source:97:8: warning: unused variable 'yzyx' [-Wunused-variable]
-  int4 yzyx = P.v.yzyx;
-       ^
-program_source:98:8: warning: unused variable 'yzyy' [-Wunused-variable]
-  int4 yzyy = P.v.yzyy;
-       ^
-program_source:99:8: warning: unused variable 'yzyz' [-Wunused-variable]
-  int4 yzyz = P.v.yzyz;
-       ^
-program_source:100:8: warning: unused variable 'yzzx' [-Wunused-variable]
-  int4 yzzx = P.v.yzzx;
-       ^
-program_source:101:8: warning: unused variable 'yzzy' [-Wunused-variable]
-  int4 yzzy = P.v.yzzy;
-       ^
-program_source:102:8: warning: unused variable 'yzzz' [-Wunused-variable]
-  int4 yzzz = P.v.yzzz;
-       ^
-program_source:103:8: warning: unused variable 'zxxx' [-Wunused-variable]
-  int4 zxxx = P.v.zxxx;
-       ^
-program_source:104:8: warning: unused variable 'zxxy' [-Wunused-variable]
-  int4 zxxy = P.v.zxxy;
-       ^
-program_source:105:8: warning: unused variable 'zxxz' [-Wunused-variable]
-  int4 zxxz = P.v.zxxz;
-       ^
-program_source:106:8: warning: unused variable 'zxyx' [-Wunused-variable]
-  int4 zxyx = P.v.zxyx;
-       ^
-program_source:107:8: warning: unused variable 'zxyy' [-Wunused-variable]
-  int4 zxyy = P.v.zxyy;
-       ^
-program_source:108:8: warning: unused variable 'zxyz' [-Wunused-variable]
-  int4 zxyz = P.v.zxyz;
-       ^
-program_source:109:8: warning: unused variable 'zxzx' [-Wunused-variable]
-  int4 zxzx = P.v.zxzx;
-       ^
-program_source:110:8: warning: unused variable 'zxzy' [-Wunused-variable]
-  int4 zxzy = P.v.zxzy;
-       ^
-program_source:111:8: warning: unused variable 'zxzz' [-Wunused-variable]
-  int4 zxzz = P.v.zxzz;
-       ^
-program_source:112:8: warning: unused variable 'zyxx' [-Wunused-variable]
-  int4 zyxx = P.v.zyxx;
-       ^
-program_source:113:8: warning: unused variable 'zyxy' [-Wunused-variable]
-  int4 zyxy = P.v.zyxy;
-       ^
-program_source:114:8: warning: unused variable 'zyxz' [-Wunused-variable]
-  int4 zyxz = P.v.zyxz;
-       ^
-program_source:115:8: warning: unused variable 'zyyx' [-Wunused-variable]
-  int4 zyyx = P.v.zyyx;
-       ^
-program_source:116:8: warning: unused variable 'zyyy' [-Wunused-variable]
-  int4 zyyy = P.v.zyyy;
-       ^
-program_source:117:8: warning: unused variable 'zyyz' [-Wunused-variable]
-  int4 zyyz = P.v.zyyz;
-       ^
-program_source:118:8: warning: unused variable 'zyzx' [-Wunused-variable]
-  int4 zyzx = P.v.zyzx;
-       ^
-program_source:119:8: warning: unused variable 'zyzy' [-Wunused-variable]
-  int4 zyzy = P.v.zyzy;
-       ^
-program_source:120:8: warning: unused variable 'zyzz' [-Wunused-variable]
-  int4 zyzz = P.v.zyzz;
-       ^
-program_source:121:8: warning: unused variable 'zzxx' [-Wunused-variable]
-  int4 zzxx = P.v.zzxx;
-       ^
-program_source:122:8: warning: unused variable 'zzxy' [-Wunused-variable]
-  int4 zzxy = P.v.zzxy;
-       ^
-program_source:123:8: warning: unused variable 'zzxz' [-Wunused-variable]
-  int4 zzxz = P.v.zzxz;
-       ^
-program_source:124:8: warning: unused variable 'zzyx' [-Wunused-variable]
-  int4 zzyx = P.v.zzyx;
-       ^
-program_source:125:8: warning: unused variable 'zzyy' [-Wunused-variable]
-  int4 zzyy = P.v.zzyy;
-       ^
-program_source:126:8: warning: unused variable 'zzyz' [-Wunused-variable]
-  int4 zzyz = P.v.zzyz;
-       ^
-program_source:127:8: warning: unused variable 'zzzx' [-Wunused-variable]
-  int4 zzzx = P.v.zzzx;
-       ^
-program_source:128:8: warning: unused variable 'zzzy' [-Wunused-variable]
-  int4 zzzy = P.v.zzzy;
-       ^
-program_source:129:8: warning: unused variable 'zzzz' [-Wunused-variable]
-  int4 zzzz = P.v.zzzz;
-       ^
-
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
index 399f5f3..28c7ac3 100644
--- a/test/tint/expressions/swizzle/read/vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/swizzle/read/vec3/u32.wgsl.expected.ir.msl
@@ -1,499 +1,132 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct S {
   uint3 v;
 };
+struct tint_module_vars_struct {
+  thread S* P;
+};
 
-thread S P = {};
-void f() {
-  uint3 v = P.v;
-  uint x = P.v[0u];
-  uint y = P.v[1u];
-  uint z = P.v[2u];
-  uint2 xx = P.v.xx;
-  uint2 xy = P.v.xy;
-  uint2 xz = P.v.xz;
-  uint2 yx = P.v.yx;
-  uint2 yy = P.v.yy;
-  uint2 yz = P.v.yz;
-  uint2 zx = P.v.zx;
-  uint2 zy = P.v.zy;
-  uint2 zz = P.v.zz;
-  uint3 xxx = P.v.xxx;
-  uint3 xxy = P.v.xxy;
-  uint3 xxz = P.v.xxz;
-  uint3 xyx = P.v.xyx;
-  uint3 xyy = P.v.xyy;
-  uint3 xyz = P.v.xyz;
-  uint3 xzx = P.v.xzx;
-  uint3 xzy = P.v.xzy;
-  uint3 xzz = P.v.xzz;
-  uint3 yxx = P.v.yxx;
-  uint3 yxy = P.v.yxy;
-  uint3 yxz = P.v.yxz;
-  uint3 yyx = P.v.yyx;
-  uint3 yyy = P.v.yyy;
-  uint3 yyz = P.v.yyz;
-  uint3 yzx = P.v.yzx;
-  uint3 yzy = P.v.yzy;
-  uint3 yzz = P.v.yzz;
-  uint3 zxx = P.v.zxx;
-  uint3 zxy = P.v.zxy;
-  uint3 zxz = P.v.zxz;
-  uint3 zyx = P.v.zyx;
-  uint3 zyy = P.v.zyy;
-  uint3 zyz = P.v.zyz;
-  uint3 zzx = P.v.zzx;
-  uint3 zzy = P.v.zzy;
-  uint3 zzz = P.v.zzz;
-  uint4 xxxx = P.v.xxxx;
-  uint4 xxxy = P.v.xxxy;
-  uint4 xxxz = P.v.xxxz;
-  uint4 xxyx = P.v.xxyx;
-  uint4 xxyy = P.v.xxyy;
-  uint4 xxyz = P.v.xxyz;
-  uint4 xxzx = P.v.xxzx;
-  uint4 xxzy = P.v.xxzy;
-  uint4 xxzz = P.v.xxzz;
-  uint4 xyxx = P.v.xyxx;
-  uint4 xyxy = P.v.xyxy;
-  uint4 xyxz = P.v.xyxz;
-  uint4 xyyx = P.v.xyyx;
-  uint4 xyyy = P.v.xyyy;
-  uint4 xyyz = P.v.xyyz;
-  uint4 xyzx = P.v.xyzx;
-  uint4 xyzy = P.v.xyzy;
-  uint4 xyzz = P.v.xyzz;
-  uint4 xzxx = P.v.xzxx;
-  uint4 xzxy = P.v.xzxy;
-  uint4 xzxz = P.v.xzxz;
-  uint4 xzyx = P.v.xzyx;
-  uint4 xzyy = P.v.xzyy;
-  uint4 xzyz = P.v.xzyz;
-  uint4 xzzx = P.v.xzzx;
-  uint4 xzzy = P.v.xzzy;
-  uint4 xzzz = P.v.xzzz;
-  uint4 yxxx = P.v.yxxx;
-  uint4 yxxy = P.v.yxxy;
-  uint4 yxxz = P.v.yxxz;
-  uint4 yxyx = P.v.yxyx;
-  uint4 yxyy = P.v.yxyy;
-  uint4 yxyz = P.v.yxyz;
-  uint4 yxzx = P.v.yxzx;
-  uint4 yxzy = P.v.yxzy;
-  uint4 yxzz = P.v.yxzz;
-  uint4 yyxx = P.v.yyxx;
-  uint4 yyxy = P.v.yyxy;
-  uint4 yyxz = P.v.yyxz;
-  uint4 yyyx = P.v.yyyx;
-  uint4 yyyy = P.v.yyyy;
-  uint4 yyyz = P.v.yyyz;
-  uint4 yyzx = P.v.yyzx;
-  uint4 yyzy = P.v.yyzy;
-  uint4 yyzz = P.v.yyzz;
-  uint4 yzxx = P.v.yzxx;
-  uint4 yzxy = P.v.yzxy;
-  uint4 yzxz = P.v.yzxz;
-  uint4 yzyx = P.v.yzyx;
-  uint4 yzyy = P.v.yzyy;
-  uint4 yzyz = P.v.yzyz;
-  uint4 yzzx = P.v.yzzx;
-  uint4 yzzy = P.v.yzzy;
-  uint4 yzzz = P.v.yzzz;
-  uint4 zxxx = P.v.zxxx;
-  uint4 zxxy = P.v.zxxy;
-  uint4 zxxz = P.v.zxxz;
-  uint4 zxyx = P.v.zxyx;
-  uint4 zxyy = P.v.zxyy;
-  uint4 zxyz = P.v.zxyz;
-  uint4 zxzx = P.v.zxzx;
-  uint4 zxzy = P.v.zxzy;
-  uint4 zxzz = P.v.zxzz;
-  uint4 zyxx = P.v.zyxx;
-  uint4 zyxy = P.v.zyxy;
-  uint4 zyxz = P.v.zyxz;
-  uint4 zyyx = P.v.zyyx;
-  uint4 zyyy = P.v.zyyy;
-  uint4 zyyz = P.v.zyyz;
-  uint4 zyzx = P.v.zyzx;
-  uint4 zyzy = P.v.zyzy;
-  uint4 zyzz = P.v.zyzz;
-  uint4 zzxx = P.v.zzxx;
-  uint4 zzxy = P.v.zzxy;
-  uint4 zzxz = P.v.zzxz;
-  uint4 zzyx = P.v.zzyx;
-  uint4 zzyy = P.v.zzyy;
-  uint4 zzyz = P.v.zzyz;
-  uint4 zzzx = P.v.zzzx;
-  uint4 zzzy = P.v.zzzy;
-  uint4 zzzz = P.v.zzzz;
+void f(tint_module_vars_struct tint_module_vars) {
+  uint3 v = (*tint_module_vars.P).v;
+  uint x = (*tint_module_vars.P).v[0u];
+  uint y = (*tint_module_vars.P).v[1u];
+  uint z = (*tint_module_vars.P).v[2u];
+  uint2 xx = (*tint_module_vars.P).v.xx;
+  uint2 xy = (*tint_module_vars.P).v.xy;
+  uint2 xz = (*tint_module_vars.P).v.xz;
+  uint2 yx = (*tint_module_vars.P).v.yx;
+  uint2 yy = (*tint_module_vars.P).v.yy;
+  uint2 yz = (*tint_module_vars.P).v.yz;
+  uint2 zx = (*tint_module_vars.P).v.zx;
+  uint2 zy = (*tint_module_vars.P).v.zy;
+  uint2 zz = (*tint_module_vars.P).v.zz;
+  uint3 xxx = (*tint_module_vars.P).v.xxx;
+  uint3 xxy = (*tint_module_vars.P).v.xxy;
+  uint3 xxz = (*tint_module_vars.P).v.xxz;
+  uint3 xyx = (*tint_module_vars.P).v.xyx;
+  uint3 xyy = (*tint_module_vars.P).v.xyy;
+  uint3 xyz = (*tint_module_vars.P).v.xyz;
+  uint3 xzx = (*tint_module_vars.P).v.xzx;
+  uint3 xzy = (*tint_module_vars.P).v.xzy;
+  uint3 xzz = (*tint_module_vars.P).v.xzz;
+  uint3 yxx = (*tint_module_vars.P).v.yxx;
+  uint3 yxy = (*tint_module_vars.P).v.yxy;
+  uint3 yxz = (*tint_module_vars.P).v.yxz;
+  uint3 yyx = (*tint_module_vars.P).v.yyx;
+  uint3 yyy = (*tint_module_vars.P).v.yyy;
+  uint3 yyz = (*tint_module_vars.P).v.yyz;
+  uint3 yzx = (*tint_module_vars.P).v.yzx;
+  uint3 yzy = (*tint_module_vars.P).v.yzy;
+  uint3 yzz = (*tint_module_vars.P).v.yzz;
+  uint3 zxx = (*tint_module_vars.P).v.zxx;
+  uint3 zxy = (*tint_module_vars.P).v.zxy;
+  uint3 zxz = (*tint_module_vars.P).v.zxz;
+  uint3 zyx = (*tint_module_vars.P).v.zyx;
+  uint3 zyy = (*tint_module_vars.P).v.zyy;
+  uint3 zyz = (*tint_module_vars.P).v.zyz;
+  uint3 zzx = (*tint_module_vars.P).v.zzx;
+  uint3 zzy = (*tint_module_vars.P).v.zzy;
+  uint3 zzz = (*tint_module_vars.P).v.zzz;
+  uint4 xxxx = (*tint_module_vars.P).v.xxxx;
+  uint4 xxxy = (*tint_module_vars.P).v.xxxy;
+  uint4 xxxz = (*tint_module_vars.P).v.xxxz;
+  uint4 xxyx = (*tint_module_vars.P).v.xxyx;
+  uint4 xxyy = (*tint_module_vars.P).v.xxyy;
+  uint4 xxyz = (*tint_module_vars.P).v.xxyz;
+  uint4 xxzx = (*tint_module_vars.P).v.xxzx;
+  uint4 xxzy = (*tint_module_vars.P).v.xxzy;
+  uint4 xxzz = (*tint_module_vars.P).v.xxzz;
+  uint4 xyxx = (*tint_module_vars.P).v.xyxx;
+  uint4 xyxy = (*tint_module_vars.P).v.xyxy;
+  uint4 xyxz = (*tint_module_vars.P).v.xyxz;
+  uint4 xyyx = (*tint_module_vars.P).v.xyyx;
+  uint4 xyyy = (*tint_module_vars.P).v.xyyy;
+  uint4 xyyz = (*tint_module_vars.P).v.xyyz;
+  uint4 xyzx = (*tint_module_vars.P).v.xyzx;
+  uint4 xyzy = (*tint_module_vars.P).v.xyzy;
+  uint4 xyzz = (*tint_module_vars.P).v.xyzz;
+  uint4 xzxx = (*tint_module_vars.P).v.xzxx;
+  uint4 xzxy = (*tint_module_vars.P).v.xzxy;
+  uint4 xzxz = (*tint_module_vars.P).v.xzxz;
+  uint4 xzyx = (*tint_module_vars.P).v.xzyx;
+  uint4 xzyy = (*tint_module_vars.P).v.xzyy;
+  uint4 xzyz = (*tint_module_vars.P).v.xzyz;
+  uint4 xzzx = (*tint_module_vars.P).v.xzzx;
+  uint4 xzzy = (*tint_module_vars.P).v.xzzy;
+  uint4 xzzz = (*tint_module_vars.P).v.xzzz;
+  uint4 yxxx = (*tint_module_vars.P).v.yxxx;
+  uint4 yxxy = (*tint_module_vars.P).v.yxxy;
+  uint4 yxxz = (*tint_module_vars.P).v.yxxz;
+  uint4 yxyx = (*tint_module_vars.P).v.yxyx;
+  uint4 yxyy = (*tint_module_vars.P).v.yxyy;
+  uint4 yxyz = (*tint_module_vars.P).v.yxyz;
+  uint4 yxzx = (*tint_module_vars.P).v.yxzx;
+  uint4 yxzy = (*tint_module_vars.P).v.yxzy;
+  uint4 yxzz = (*tint_module_vars.P).v.yxzz;
+  uint4 yyxx = (*tint_module_vars.P).v.yyxx;
+  uint4 yyxy = (*tint_module_vars.P).v.yyxy;
+  uint4 yyxz = (*tint_module_vars.P).v.yyxz;
+  uint4 yyyx = (*tint_module_vars.P).v.yyyx;
+  uint4 yyyy = (*tint_module_vars.P).v.yyyy;
+  uint4 yyyz = (*tint_module_vars.P).v.yyyz;
+  uint4 yyzx = (*tint_module_vars.P).v.yyzx;
+  uint4 yyzy = (*tint_module_vars.P).v.yyzy;
+  uint4 yyzz = (*tint_module_vars.P).v.yyzz;
+  uint4 yzxx = (*tint_module_vars.P).v.yzxx;
+  uint4 yzxy = (*tint_module_vars.P).v.yzxy;
+  uint4 yzxz = (*tint_module_vars.P).v.yzxz;
+  uint4 yzyx = (*tint_module_vars.P).v.yzyx;
+  uint4 yzyy = (*tint_module_vars.P).v.yzyy;
+  uint4 yzyz = (*tint_module_vars.P).v.yzyz;
+  uint4 yzzx = (*tint_module_vars.P).v.yzzx;
+  uint4 yzzy = (*tint_module_vars.P).v.yzzy;
+  uint4 yzzz = (*tint_module_vars.P).v.yzzz;
+  uint4 zxxx = (*tint_module_vars.P).v.zxxx;
+  uint4 zxxy = (*tint_module_vars.P).v.zxxy;
+  uint4 zxxz = (*tint_module_vars.P).v.zxxz;
+  uint4 zxyx = (*tint_module_vars.P).v.zxyx;
+  uint4 zxyy = (*tint_module_vars.P).v.zxyy;
+  uint4 zxyz = (*tint_module_vars.P).v.zxyz;
+  uint4 zxzx = (*tint_module_vars.P).v.zxzx;
+  uint4 zxzy = (*tint_module_vars.P).v.zxzy;
+  uint4 zxzz = (*tint_module_vars.P).v.zxzz;
+  uint4 zyxx = (*tint_module_vars.P).v.zyxx;
+  uint4 zyxy = (*tint_module_vars.P).v.zyxy;
+  uint4 zyxz = (*tint_module_vars.P).v.zyxz;
+  uint4 zyyx = (*tint_module_vars.P).v.zyyx;
+  uint4 zyyy = (*tint_module_vars.P).v.zyyy;
+  uint4 zyyz = (*tint_module_vars.P).v.zyyz;
+  uint4 zyzx = (*tint_module_vars.P).v.zyzx;
+  uint4 zyzy = (*tint_module_vars.P).v.zyzy;
+  uint4 zyzz = (*tint_module_vars.P).v.zyzz;
+  uint4 zzxx = (*tint_module_vars.P).v.zzxx;
+  uint4 zzxy = (*tint_module_vars.P).v.zzxy;
+  uint4 zzxz = (*tint_module_vars.P).v.zzxz;
+  uint4 zzyx = (*tint_module_vars.P).v.zzyx;
+  uint4 zzyy = (*tint_module_vars.P).v.zzyy;
+  uint4 zzyz = (*tint_module_vars.P).v.zzyz;
+  uint4 zzzx = (*tint_module_vars.P).v.zzzx;
+  uint4 zzzy = (*tint_module_vars.P).v.zzzy;
+  uint4 zzzz = (*tint_module_vars.P).v.zzzz;
 }
-program_source:7:10: error: program scope variable must reside in constant address space
-thread S P = {};
-         ^
-program_source:9:9: warning: unused variable 'v' [-Wunused-variable]
-  uint3 v = P.v;
-        ^
-program_source:10:8: warning: unused variable 'x' [-Wunused-variable]
-  uint x = P.v[0u];
-       ^
-program_source:11:8: warning: unused variable 'y' [-Wunused-variable]
-  uint y = P.v[1u];
-       ^
-program_source:12:8: warning: unused variable 'z' [-Wunused-variable]
-  uint z = P.v[2u];
-       ^
-program_source:13:9: warning: unused variable 'xx' [-Wunused-variable]
-  uint2 xx = P.v.xx;
-        ^
-program_source:14:9: warning: unused variable 'xy' [-Wunused-variable]
-  uint2 xy = P.v.xy;
-        ^
-program_source:15:9: warning: unused variable 'xz' [-Wunused-variable]
-  uint2 xz = P.v.xz;
-        ^
-program_source:16:9: warning: unused variable 'yx' [-Wunused-variable]
-  uint2 yx = P.v.yx;
-        ^
-program_source:17:9: warning: unused variable 'yy' [-Wunused-variable]
-  uint2 yy = P.v.yy;
-        ^
-program_source:18:9: warning: unused variable 'yz' [-Wunused-variable]
-  uint2 yz = P.v.yz;
-        ^
-program_source:19:9: warning: unused variable 'zx' [-Wunused-variable]
-  uint2 zx = P.v.zx;
-        ^
-program_source:20:9: warning: unused variable 'zy' [-Wunused-variable]
-  uint2 zy = P.v.zy;
-        ^
-program_source:21:9: warning: unused variable 'zz' [-Wunused-variable]
-  uint2 zz = P.v.zz;
-        ^
-program_source:22:9: warning: unused variable 'xxx' [-Wunused-variable]
-  uint3 xxx = P.v.xxx;
-        ^
-program_source:23:9: warning: unused variable 'xxy' [-Wunused-variable]
-  uint3 xxy = P.v.xxy;
-        ^
-program_source:24:9: warning: unused variable 'xxz' [-Wunused-variable]
-  uint3 xxz = P.v.xxz;
-        ^
-program_source:25:9: warning: unused variable 'xyx' [-Wunused-variable]
-  uint3 xyx = P.v.xyx;
-        ^
-program_source:26:9: warning: unused variable 'xyy' [-Wunused-variable]
-  uint3 xyy = P.v.xyy;
-        ^
-program_source:27:9: warning: unused variable 'xyz' [-Wunused-variable]
-  uint3 xyz = P.v.xyz;
-        ^
-program_source:28:9: warning: unused variable 'xzx' [-Wunused-variable]
-  uint3 xzx = P.v.xzx;
-        ^
-program_source:29:9: warning: unused variable 'xzy' [-Wunused-variable]
-  uint3 xzy = P.v.xzy;
-        ^
-program_source:30:9: warning: unused variable 'xzz' [-Wunused-variable]
-  uint3 xzz = P.v.xzz;
-        ^
-program_source:31:9: warning: unused variable 'yxx' [-Wunused-variable]
-  uint3 yxx = P.v.yxx;
-        ^
-program_source:32:9: warning: unused variable 'yxy' [-Wunused-variable]
-  uint3 yxy = P.v.yxy;
-        ^
-program_source:33:9: warning: unused variable 'yxz' [-Wunused-variable]
-  uint3 yxz = P.v.yxz;
-        ^
-program_source:34:9: warning: unused variable 'yyx' [-Wunused-variable]
-  uint3 yyx = P.v.yyx;
-        ^
-program_source:35:9: warning: unused variable 'yyy' [-Wunused-variable]
-  uint3 yyy = P.v.yyy;
-        ^
-program_source:36:9: warning: unused variable 'yyz' [-Wunused-variable]
-  uint3 yyz = P.v.yyz;
-        ^
-program_source:37:9: warning: unused variable 'yzx' [-Wunused-variable]
-  uint3 yzx = P.v.yzx;
-        ^
-program_source:38:9: warning: unused variable 'yzy' [-Wunused-variable]
-  uint3 yzy = P.v.yzy;
-        ^
-program_source:39:9: warning: unused variable 'yzz' [-Wunused-variable]
-  uint3 yzz = P.v.yzz;
-        ^
-program_source:40:9: warning: unused variable 'zxx' [-Wunused-variable]
-  uint3 zxx = P.v.zxx;
-        ^
-program_source:41:9: warning: unused variable 'zxy' [-Wunused-variable]
-  uint3 zxy = P.v.zxy;
-        ^
-program_source:42:9: warning: unused variable 'zxz' [-Wunused-variable]
-  uint3 zxz = P.v.zxz;
-        ^
-program_source:43:9: warning: unused variable 'zyx' [-Wunused-variable]
-  uint3 zyx = P.v.zyx;
-        ^
-program_source:44:9: warning: unused variable 'zyy' [-Wunused-variable]
-  uint3 zyy = P.v.zyy;
-        ^
-program_source:45:9: warning: unused variable 'zyz' [-Wunused-variable]
-  uint3 zyz = P.v.zyz;
-        ^
-program_source:46:9: warning: unused variable 'zzx' [-Wunused-variable]
-  uint3 zzx = P.v.zzx;
-        ^
-program_source:47:9: warning: unused variable 'zzy' [-Wunused-variable]
-  uint3 zzy = P.v.zzy;
-        ^
-program_source:48:9: warning: unused variable 'zzz' [-Wunused-variable]
-  uint3 zzz = P.v.zzz;
-        ^
-program_source:49:9: warning: unused variable 'xxxx' [-Wunused-variable]
-  uint4 xxxx = P.v.xxxx;
-        ^
-program_source:50:9: warning: unused variable 'xxxy' [-Wunused-variable]
-  uint4 xxxy = P.v.xxxy;
-        ^
-program_source:51:9: warning: unused variable 'xxxz' [-Wunused-variable]
-  uint4 xxxz = P.v.xxxz;
-        ^
-program_source:52:9: warning: unused variable 'xxyx' [-Wunused-variable]
-  uint4 xxyx = P.v.xxyx;
-        ^
-program_source:53:9: warning: unused variable 'xxyy' [-Wunused-variable]
-  uint4 xxyy = P.v.xxyy;
-        ^
-program_source:54:9: warning: unused variable 'xxyz' [-Wunused-variable]
-  uint4 xxyz = P.v.xxyz;
-        ^
-program_source:55:9: warning: unused variable 'xxzx' [-Wunused-variable]
-  uint4 xxzx = P.v.xxzx;
-        ^
-program_source:56:9: warning: unused variable 'xxzy' [-Wunused-variable]
-  uint4 xxzy = P.v.xxzy;
-        ^
-program_source:57:9: warning: unused variable 'xxzz' [-Wunused-variable]
-  uint4 xxzz = P.v.xxzz;
-        ^
-program_source:58:9: warning: unused variable 'xyxx' [-Wunused-variable]
-  uint4 xyxx = P.v.xyxx;
-        ^
-program_source:59:9: warning: unused variable 'xyxy' [-Wunused-variable]
-  uint4 xyxy = P.v.xyxy;
-        ^
-program_source:60:9: warning: unused variable 'xyxz' [-Wunused-variable]
-  uint4 xyxz = P.v.xyxz;
-        ^
-program_source:61:9: warning: unused variable 'xyyx' [-Wunused-variable]
-  uint4 xyyx = P.v.xyyx;
-        ^
-program_source:62:9: warning: unused variable 'xyyy' [-Wunused-variable]
-  uint4 xyyy = P.v.xyyy;
-        ^
-program_source:63:9: warning: unused variable 'xyyz' [-Wunused-variable]
-  uint4 xyyz = P.v.xyyz;
-        ^
-program_source:64:9: warning: unused variable 'xyzx' [-Wunused-variable]
-  uint4 xyzx = P.v.xyzx;
-        ^
-program_source:65:9: warning: unused variable 'xyzy' [-Wunused-variable]
-  uint4 xyzy = P.v.xyzy;
-        ^
-program_source:66:9: warning: unused variable 'xyzz' [-Wunused-variable]
-  uint4 xyzz = P.v.xyzz;
-        ^
-program_source:67:9: warning: unused variable 'xzxx' [-Wunused-variable]
-  uint4 xzxx = P.v.xzxx;
-        ^
-program_source:68:9: warning: unused variable 'xzxy' [-Wunused-variable]
-  uint4 xzxy = P.v.xzxy;
-        ^
-program_source:69:9: warning: unused variable 'xzxz' [-Wunused-variable]
-  uint4 xzxz = P.v.xzxz;
-        ^
-program_source:70:9: warning: unused variable 'xzyx' [-Wunused-variable]
-  uint4 xzyx = P.v.xzyx;
-        ^
-program_source:71:9: warning: unused variable 'xzyy' [-Wunused-variable]
-  uint4 xzyy = P.v.xzyy;
-        ^
-program_source:72:9: warning: unused variable 'xzyz' [-Wunused-variable]
-  uint4 xzyz = P.v.xzyz;
-        ^
-program_source:73:9: warning: unused variable 'xzzx' [-Wunused-variable]
-  uint4 xzzx = P.v.xzzx;
-        ^
-program_source:74:9: warning: unused variable 'xzzy' [-Wunused-variable]
-  uint4 xzzy = P.v.xzzy;
-        ^
-program_source:75:9: warning: unused variable 'xzzz' [-Wunused-variable]
-  uint4 xzzz = P.v.xzzz;
-        ^
-program_source:76:9: warning: unused variable 'yxxx' [-Wunused-variable]
-  uint4 yxxx = P.v.yxxx;
-        ^
-program_source:77:9: warning: unused variable 'yxxy' [-Wunused-variable]
-  uint4 yxxy = P.v.yxxy;
-        ^
-program_source:78:9: warning: unused variable 'yxxz' [-Wunused-variable]
-  uint4 yxxz = P.v.yxxz;
-        ^
-program_source:79:9: warning: unused variable 'yxyx' [-Wunused-variable]
-  uint4 yxyx = P.v.yxyx;
-        ^
-program_source:80:9: warning: unused variable 'yxyy' [-Wunused-variable]
-  uint4 yxyy = P.v.yxyy;
-        ^
-program_source:81:9: warning: unused variable 'yxyz' [-Wunused-variable]
-  uint4 yxyz = P.v.yxyz;
-        ^
-program_source:82:9: warning: unused variable 'yxzx' [-Wunused-variable]
-  uint4 yxzx = P.v.yxzx;
-        ^
-program_source:83:9: warning: unused variable 'yxzy' [-Wunused-variable]
-  uint4 yxzy = P.v.yxzy;
-        ^
-program_source:84:9: warning: unused variable 'yxzz' [-Wunused-variable]
-  uint4 yxzz = P.v.yxzz;
-        ^
-program_source:85:9: warning: unused variable 'yyxx' [-Wunused-variable]
-  uint4 yyxx = P.v.yyxx;
-        ^
-program_source:86:9: warning: unused variable 'yyxy' [-Wunused-variable]
-  uint4 yyxy = P.v.yyxy;
-        ^
-program_source:87:9: warning: unused variable 'yyxz' [-Wunused-variable]
-  uint4 yyxz = P.v.yyxz;
-        ^
-program_source:88:9: warning: unused variable 'yyyx' [-Wunused-variable]
-  uint4 yyyx = P.v.yyyx;
-        ^
-program_source:89:9: warning: unused variable 'yyyy' [-Wunused-variable]
-  uint4 yyyy = P.v.yyyy;
-        ^
-program_source:90:9: warning: unused variable 'yyyz' [-Wunused-variable]
-  uint4 yyyz = P.v.yyyz;
-        ^
-program_source:91:9: warning: unused variable 'yyzx' [-Wunused-variable]
-  uint4 yyzx = P.v.yyzx;
-        ^
-program_source:92:9: warning: unused variable 'yyzy' [-Wunused-variable]
-  uint4 yyzy = P.v.yyzy;
-        ^
-program_source:93:9: warning: unused variable 'yyzz' [-Wunused-variable]
-  uint4 yyzz = P.v.yyzz;
-        ^
-program_source:94:9: warning: unused variable 'yzxx' [-Wunused-variable]
-  uint4 yzxx = P.v.yzxx;
-        ^
-program_source:95:9: warning: unused variable 'yzxy' [-Wunused-variable]
-  uint4 yzxy = P.v.yzxy;
-        ^
-program_source:96:9: warning: unused variable 'yzxz' [-Wunused-variable]
-  uint4 yzxz = P.v.yzxz;
-        ^
-program_source:97:9: warning: unused variable 'yzyx' [-Wunused-variable]
-  uint4 yzyx = P.v.yzyx;
-        ^
-program_source:98:9: warning: unused variable 'yzyy' [-Wunused-variable]
-  uint4 yzyy = P.v.yzyy;
-        ^
-program_source:99:9: warning: unused variable 'yzyz' [-Wunused-variable]
-  uint4 yzyz = P.v.yzyz;
-        ^
-program_source:100:9: warning: unused variable 'yzzx' [-Wunused-variable]
-  uint4 yzzx = P.v.yzzx;
-        ^
-program_source:101:9: warning: unused variable 'yzzy' [-Wunused-variable]
-  uint4 yzzy = P.v.yzzy;
-        ^
-program_source:102:9: warning: unused variable 'yzzz' [-Wunused-variable]
-  uint4 yzzz = P.v.yzzz;
-        ^
-program_source:103:9: warning: unused variable 'zxxx' [-Wunused-variable]
-  uint4 zxxx = P.v.zxxx;
-        ^
-program_source:104:9: warning: unused variable 'zxxy' [-Wunused-variable]
-  uint4 zxxy = P.v.zxxy;
-        ^
-program_source:105:9: warning: unused variable 'zxxz' [-Wunused-variable]
-  uint4 zxxz = P.v.zxxz;
-        ^
-program_source:106:9: warning: unused variable 'zxyx' [-Wunused-variable]
-  uint4 zxyx = P.v.zxyx;
-        ^
-program_source:107:9: warning: unused variable 'zxyy' [-Wunused-variable]
-  uint4 zxyy = P.v.zxyy;
-        ^
-program_source:108:9: warning: unused variable 'zxyz' [-Wunused-variable]
-  uint4 zxyz = P.v.zxyz;
-        ^
-program_source:109:9: warning: unused variable 'zxzx' [-Wunused-variable]
-  uint4 zxzx = P.v.zxzx;
-        ^
-program_source:110:9: warning: unused variable 'zxzy' [-Wunused-variable]
-  uint4 zxzy = P.v.zxzy;
-        ^
-program_source:111:9: warning: unused variable 'zxzz' [-Wunused-variable]
-  uint4 zxzz = P.v.zxzz;
-        ^
-program_source:112:9: warning: unused variable 'zyxx' [-Wunused-variable]
-  uint4 zyxx = P.v.zyxx;
-        ^
-program_source:113:9: warning: unused variable 'zyxy' [-Wunused-variable]
-  uint4 zyxy = P.v.zyxy;
-        ^
-program_source:114:9: warning: unused variable 'zyxz' [-Wunused-variable]
-  uint4 zyxz = P.v.zyxz;
-        ^
-program_source:115:9: warning: unused variable 'zyyx' [-Wunused-variable]
-  uint4 zyyx = P.v.zyyx;
-        ^
-program_source:116:9: warning: unused variable 'zyyy' [-Wunused-variable]
-  uint4 zyyy = P.v.zyyy;
-        ^
-program_source:117:9: warning: unused variable 'zyyz' [-Wunused-variable]
-  uint4 zyyz = P.v.zyyz;
-        ^
-program_source:118:9: warning: unused variable 'zyzx' [-Wunused-variable]
-  uint4 zyzx = P.v.zyzx;
-        ^
-program_source:119:9: warning: unused variable 'zyzy' [-Wunused-variable]
-  uint4 zyzy = P.v.zyzy;
-        ^
-program_source:120:9: warning: unused variable 'zyzz' [-Wunused-variable]
-  uint4 zyzz = P.v.zyzz;
-        ^
-program_source:121:9: warning: unused variable 'zzxx' [-Wunused-variable]
-  uint4 zzxx = P.v.zzxx;
-        ^
-program_source:122:9: warning: unused variable 'zzxy' [-Wunused-variable]
-  uint4 zzxy = P.v.zzxy;
-        ^
-program_source:123:9: warning: unused variable 'zzxz' [-Wunused-variable]
-  uint4 zzxz = P.v.zzxz;
-        ^
-program_source:124:9: warning: unused variable 'zzyx' [-Wunused-variable]
-  uint4 zzyx = P.v.zzyx;
-        ^
-program_source:125:9: warning: unused variable 'zzyy' [-Wunused-variable]
-  uint4 zzyy = P.v.zzyy;
-        ^
-program_source:126:9: warning: unused variable 'zzyz' [-Wunused-variable]
-  uint4 zzyz = P.v.zzyz;
-        ^
-program_source:127:9: warning: unused variable 'zzzx' [-Wunused-variable]
-  uint4 zzzx = P.v.zzzx;
-        ^
-program_source:128:9: warning: unused variable 'zzzy' [-Wunused-variable]
-  uint4 zzzy = P.v.zzzy;
-        ^
-program_source:129:9: warning: unused variable 'zzzz' [-Wunused-variable]
-  uint4 zzzz = P.v.zzzz;
-        ^
-
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
index d020c19..5c64adc 100644
--- 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
@@ -1,31 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  half3 v;
+};
+struct tint_module_vars_struct {
+  device S* U;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(8) {
-  v:vec3<f16> @offset(0)
+void f(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.U).v = half3(1.0h, 2.0h, 3.0h);
+  (*tint_module_vars.U).v[0u] = 1.0h;
+  (*tint_module_vars.U).v[1u] = 2.0h;
+  (*tint_module_vars.U).v[2u] = 3.0h;
 }
-
-$B1: {  # root
-  %U:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%f = func():void {
-  $B2: {
-    %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
index aec9b83..5bedd67 100644
--- 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
@@ -1,31 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float3 v;
+};
+struct tint_module_vars_struct {
+  device S* U;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  v:vec3<f32> @offset(0)
+void f(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.U).v = float3(1.0f, 2.0f, 3.0f);
+  (*tint_module_vars.U).v[0u] = 1.0f;
+  (*tint_module_vars.U).v[1u] = 2.0f;
+  (*tint_module_vars.U).v[2u] = 3.0f;
 }
-
-$B1: {  # root
-  %U:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%f = func():void {
-  $B2: {
-    %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
index 8384aa5..3dfdfc5 100644
--- 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
@@ -1,31 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int3 v;
+};
+struct tint_module_vars_struct {
+  device S* U;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  v:vec3<i32> @offset(0)
+void f(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.U).v = int3(1, 2, 3);
+  (*tint_module_vars.U).v[0u] = 1;
+  (*tint_module_vars.U).v[1u] = 2;
+  (*tint_module_vars.U).v[2u] = 3;
 }
-
-$B1: {  # root
-  %U:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%f = func():void {
-  $B2: {
-    %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
index eb26cf5..dc0c515 100644
--- 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
@@ -1,31 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  uint3 v;
+};
+struct tint_module_vars_struct {
+  device S* U;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  v:vec3<u32> @offset(0)
+void f(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.U).v = uint3(1u, 2u, 3u);
+  (*tint_module_vars.U).v[0u] = 1u;
+  (*tint_module_vars.U).v[1u] = 2u;
+  (*tint_module_vars.U).v[2u] = 3u;
 }
-
-$B1: {  # root
-  %U:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%f = func():void {
-  $B2: {
-    %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
index 1fa363e..e3af1f7 100644
--- a/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/swizzle/write/vec3/f16.wgsl.expected.ir.msl
@@ -1,19 +1,15 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct S {
   half3 v;
 };
+struct tint_module_vars_struct {
+  thread S* P;
+};
 
-thread S P = {};
-void f() {
-  P.v = half3(1.0h, 2.0h, 3.0h);
-  P.v[0u] = 1.0h;
-  P.v[1u] = 2.0h;
-  P.v[2u] = 3.0h;
+void f(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.P).v = half3(1.0h, 2.0h, 3.0h);
+  (*tint_module_vars.P).v[0u] = 1.0h;
+  (*tint_module_vars.P).v[1u] = 2.0h;
+  (*tint_module_vars.P).v[2u] = 3.0h;
 }
-program_source:7:10: error: program scope variable must reside in constant address space
-thread S P = {};
-         ^
-
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
index d883ba5..c48421e 100644
--- a/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/swizzle/write/vec3/f32.wgsl.expected.ir.msl
@@ -1,19 +1,15 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct S {
   float3 v;
 };
+struct tint_module_vars_struct {
+  thread S* P;
+};
 
-thread S P = {};
-void f() {
-  P.v = float3(1.0f, 2.0f, 3.0f);
-  P.v[0u] = 1.0f;
-  P.v[1u] = 2.0f;
-  P.v[2u] = 3.0f;
+void f(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.P).v = float3(1.0f, 2.0f, 3.0f);
+  (*tint_module_vars.P).v[0u] = 1.0f;
+  (*tint_module_vars.P).v[1u] = 2.0f;
+  (*tint_module_vars.P).v[2u] = 3.0f;
 }
-program_source:7:10: error: program scope variable must reside in constant address space
-thread S P = {};
-         ^
-
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
index 882337f..970c96e 100644
--- a/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/swizzle/write/vec3/i32.wgsl.expected.ir.msl
@@ -1,19 +1,15 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct S {
   int3 v;
 };
+struct tint_module_vars_struct {
+  thread S* P;
+};
 
-thread S P = {};
-void f() {
-  P.v = int3(1, 2, 3);
-  P.v[0u] = 1;
-  P.v[1u] = 2;
-  P.v[2u] = 3;
+void f(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.P).v = int3(1, 2, 3);
+  (*tint_module_vars.P).v[0u] = 1;
+  (*tint_module_vars.P).v[1u] = 2;
+  (*tint_module_vars.P).v[2u] = 3;
 }
-program_source:7:10: error: program scope variable must reside in constant address space
-thread S P = {};
-         ^
-
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
index c82764c..c8f3d08 100644
--- a/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/swizzle/write/vec3/u32.wgsl.expected.ir.msl
@@ -1,19 +1,15 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct S {
   uint3 v;
 };
+struct tint_module_vars_struct {
+  thread S* P;
+};
 
-thread S P = {};
-void f() {
-  P.v = uint3(1u, 2u, 3u);
-  P.v[0u] = 1u;
-  P.v[1u] = 2u;
-  P.v[2u] = 3u;
+void f(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.P).v = uint3(1u, 2u, 3u);
+  (*tint_module_vars.P).v[0u] = 1u;
+  (*tint_module_vars.P).v[1u] = 2u;
+  (*tint_module_vars.P).v[2u] = 3u;
 }
-program_source:7:10: error: program scope variable must reside in constant address space
-thread S P = {};
-         ^
-
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
index 6c452e1..1b5951f 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half2x2 m() {
-  t = (t + 1.0h);
+half2x2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0h);
   return half2x2(half2(1.0h, 2.0h), half2(3.0h, 4.0h));
 }
-void f() {
-  float2x2 v = float2x2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float2x2 v = float2x2(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:12: warning: unused variable 'v' [-Wunused-variable]
-  float2x2 v = float2x2(m());
-           ^
-
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
index 6db60e1..7aad2c0 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float2x2 m() {
-  t = (t + 1.0f);
+float2x2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0f);
   return float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
 }
-void f() {
-  half2x2 v = half2x2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half2x2 v = half2x2(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:11: warning: unused variable 'v' [-Wunused-variable]
-  half2x2 v = half2x2(m());
-          ^
-
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
index 8c6dba6..7e29908 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x2* u;
+};
 
-thread half2x2 u = half2x2(half2(1.0h, 2.0h), half2(3.0h, 4.0h));
-void f() {
-  float2x2 v = float2x2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float2x2 v = float2x2((*tint_module_vars.u));
 }
-program_source:4:16: error: program scope variable must reside in constant address space
-thread half2x2 u = half2x2(half2(1.0h, 2.0h), half2(3.0h, 4.0h));
-               ^
-program_source:6:12: warning: unused variable 'v' [-Wunused-variable]
-  float2x2 v = float2x2(u);
-           ^
-
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
index a8a49ff..8267a52 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x2* u;
+};
 
-thread float2x2 u = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
-void f() {
-  half2x2 v = half2x2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half2x2 v = half2x2((*tint_module_vars.u));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float2x2 u = float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f));
-                ^
-program_source:6:11: warning: unused variable 'v' [-Wunused-variable]
-  half2x2 v = half2x2(u);
-          ^
-
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
index 23033dd..53878b4 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half2x3 m() {
-  t = (t + 1.0h);
+half2x3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0h);
   return half2x3(half3(1.0h, 2.0h, 3.0h), half3(4.0h, 5.0h, 6.0h));
 }
-void f() {
-  float2x3 v = float2x3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float2x3 v = float2x3(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:12: warning: unused variable 'v' [-Wunused-variable]
-  float2x3 v = float2x3(m());
-           ^
-
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
index 6920b55..de30d27 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float2x3 m() {
-  t = (t + 1.0f);
+float2x3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0f);
   return float2x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f));
 }
-void f() {
-  half2x3 v = half2x3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half2x3 v = half2x3(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:11: warning: unused variable 'v' [-Wunused-variable]
-  half2x3 v = half2x3(m());
-          ^
-
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
index d2ce968..67a61ca 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x3* u;
+};
 
-thread half2x3 u = half2x3(half3(1.0h, 2.0h, 3.0h), half3(4.0h, 5.0h, 6.0h));
-void f() {
-  float2x3 v = float2x3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float2x3 v = float2x3((*tint_module_vars.u));
 }
-program_source:4:16: error: program scope variable must reside in constant address space
-thread half2x3 u = half2x3(half3(1.0h, 2.0h, 3.0h), half3(4.0h, 5.0h, 6.0h));
-               ^
-program_source:6:12: warning: unused variable 'v' [-Wunused-variable]
-  float2x3 v = float2x3(u);
-           ^
-
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
index d214a8a..3f52f8b 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x3* u;
+};
 
-thread float2x3 u = float2x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f));
-void f() {
-  half2x3 v = half2x3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half2x3 v = half2x3((*tint_module_vars.u));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float2x3 u = float2x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f));
-                ^
-program_source:6:11: warning: unused variable 'v' [-Wunused-variable]
-  half2x3 v = half2x3(u);
-          ^
-
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
index 7932d8f..88eb046 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half2x4 m() {
-  t = (t + 1.0h);
+half2x4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0h);
   return half2x4(half4(1.0h, 2.0h, 3.0h, 4.0h), half4(5.0h, 6.0h, 7.0h, 8.0h));
 }
-void f() {
-  float2x4 v = float2x4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float2x4 v = float2x4(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:12: warning: unused variable 'v' [-Wunused-variable]
-  float2x4 v = float2x4(m());
-           ^
-
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
index 90ec16c..b4abf37 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float2x4 m() {
-  t = (t + 1.0f);
+float2x4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0f);
   return float2x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f));
 }
-void f() {
-  half2x4 v = half2x4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half2x4 v = half2x4(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:11: warning: unused variable 'v' [-Wunused-variable]
-  half2x4 v = half2x4(m());
-          ^
-
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
index e32b520..801f215 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x4* u;
+};
 
-thread half2x4 u = half2x4(half4(1.0h, 2.0h, 3.0h, 4.0h), half4(5.0h, 6.0h, 7.0h, 8.0h));
-void f() {
-  float2x4 v = float2x4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float2x4 v = float2x4((*tint_module_vars.u));
 }
-program_source:4:16: error: program scope variable must reside in constant address space
-thread half2x4 u = half2x4(half4(1.0h, 2.0h, 3.0h, 4.0h), half4(5.0h, 6.0h, 7.0h, 8.0h));
-               ^
-program_source:6:12: warning: unused variable 'v' [-Wunused-variable]
-  float2x4 v = float2x4(u);
-           ^
-
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
index 7808a05..820db89 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x4* u;
+};
 
-thread float2x4 u = float2x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f));
-void f() {
-  half2x4 v = half2x4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half2x4 v = half2x4((*tint_module_vars.u));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float2x4 u = float2x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f));
-                ^
-program_source:6:11: warning: unused variable 'v' [-Wunused-variable]
-  half2x4 v = half2x4(u);
-          ^
-
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
index 190aac7..904136b 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half3x2 m() {
-  t = (t + 1.0h);
+half3x2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0h);
   return half3x2(half2(1.0h, 2.0h), half2(3.0h, 4.0h), half2(5.0h, 6.0h));
 }
-void f() {
-  float3x2 v = float3x2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float3x2 v = float3x2(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:12: warning: unused variable 'v' [-Wunused-variable]
-  float3x2 v = float3x2(m());
-           ^
-
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
index 86f0ba9..8a27dae 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float3x2 m() {
-  t = (t + 1.0f);
+float3x2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0f);
   return float3x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f));
 }
-void f() {
-  half3x2 v = half3x2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half3x2 v = half3x2(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:11: warning: unused variable 'v' [-Wunused-variable]
-  half3x2 v = half3x2(m());
-          ^
-
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
index 3c8fe4f..052ecd2 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x2* u;
+};
 
-thread half3x2 u = half3x2(half2(1.0h, 2.0h), half2(3.0h, 4.0h), half2(5.0h, 6.0h));
-void f() {
-  float3x2 v = float3x2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float3x2 v = float3x2((*tint_module_vars.u));
 }
-program_source:4:16: error: program scope variable must reside in constant address space
-thread half3x2 u = half3x2(half2(1.0h, 2.0h), half2(3.0h, 4.0h), half2(5.0h, 6.0h));
-               ^
-program_source:6:12: warning: unused variable 'v' [-Wunused-variable]
-  float3x2 v = float3x2(u);
-           ^
-
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
index 9d715d3..23c3313 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x2* u;
+};
 
-thread float3x2 u = float3x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f));
-void f() {
-  half3x2 v = half3x2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half3x2 v = half3x2((*tint_module_vars.u));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float3x2 u = float3x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f));
-                ^
-program_source:6:11: warning: unused variable 'v' [-Wunused-variable]
-  half3x2 v = half3x2(u);
-          ^
-
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
index 3e4edfc..00e2254 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half3x3 m() {
-  t = (t + 1.0h);
+half3x3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0h);
   return half3x3(half3(1.0h, 2.0h, 3.0h), half3(4.0h, 5.0h, 6.0h), half3(7.0h, 8.0h, 9.0h));
 }
-void f() {
-  float3x3 v = float3x3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float3x3 v = float3x3(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:12: warning: unused variable 'v' [-Wunused-variable]
-  float3x3 v = float3x3(m());
-           ^
-
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
index 05ec66a..67225ec 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float3x3 m() {
-  t = (t + 1.0f);
+float3x3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0f);
   return float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
 }
-void f() {
-  half3x3 v = half3x3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half3x3 v = half3x3(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:11: warning: unused variable 'v' [-Wunused-variable]
-  half3x3 v = half3x3(m());
-          ^
-
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
index 28b1b91..0edabb1 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x3* u;
+};
 
-thread half3x3 u = half3x3(half3(1.0h, 2.0h, 3.0h), half3(4.0h, 5.0h, 6.0h), half3(7.0h, 8.0h, 9.0h));
-void f() {
-  float3x3 v = float3x3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float3x3 v = float3x3((*tint_module_vars.u));
 }
-program_source:4:16: error: program scope variable must reside in constant address space
-thread half3x3 u = half3x3(half3(1.0h, 2.0h, 3.0h), half3(4.0h, 5.0h, 6.0h), half3(7.0h, 8.0h, 9.0h));
-               ^
-program_source:6:12: warning: unused variable 'v' [-Wunused-variable]
-  float3x3 v = float3x3(u);
-           ^
-
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
index 67868da..701e718 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x3* u;
+};
 
-thread float3x3 u = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
-void f() {
-  half3x3 v = half3x3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half3x3 v = half3x3((*tint_module_vars.u));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float3x3 u = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
-                ^
-program_source:6:11: warning: unused variable 'v' [-Wunused-variable]
-  half3x3 v = half3x3(u);
-          ^
-
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
index 334d887..f4448b1 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half3x4 m() {
-  t = (t + 1.0h);
+half3x4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0h);
   return half3x4(half4(1.0h, 2.0h, 3.0h, 4.0h), half4(5.0h, 6.0h, 7.0h, 8.0h), half4(9.0h, 10.0h, 11.0h, 12.0h));
 }
-void f() {
-  float3x4 v = float3x4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float3x4 v = float3x4(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:12: warning: unused variable 'v' [-Wunused-variable]
-  float3x4 v = float3x4(m());
-           ^
-
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
index 8d8625c..026f2c4 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float3x4 m() {
-  t = (t + 1.0f);
+float3x4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0f);
   return float3x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f), float4(9.0f, 10.0f, 11.0f, 12.0f));
 }
-void f() {
-  half3x4 v = half3x4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half3x4 v = half3x4(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:11: warning: unused variable 'v' [-Wunused-variable]
-  half3x4 v = half3x4(m());
-          ^
-
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
index d043073..a1256ba 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x4* u;
+};
 
-thread half3x4 u = half3x4(half4(1.0h, 2.0h, 3.0h, 4.0h), half4(5.0h, 6.0h, 7.0h, 8.0h), half4(9.0h, 10.0h, 11.0h, 12.0h));
-void f() {
-  float3x4 v = float3x4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float3x4 v = float3x4((*tint_module_vars.u));
 }
-program_source:4:16: error: program scope variable must reside in constant address space
-thread half3x4 u = half3x4(half4(1.0h, 2.0h, 3.0h, 4.0h), half4(5.0h, 6.0h, 7.0h, 8.0h), half4(9.0h, 10.0h, 11.0h, 12.0h));
-               ^
-program_source:6:12: warning: unused variable 'v' [-Wunused-variable]
-  float3x4 v = float3x4(u);
-           ^
-
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
index 8b3da37..73b202d 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x4* u;
+};
 
-thread float3x4 u = float3x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f), float4(9.0f, 10.0f, 11.0f, 12.0f));
-void f() {
-  half3x4 v = half3x4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half3x4 v = half3x4((*tint_module_vars.u));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float3x4 u = float3x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f), float4(9.0f, 10.0f, 11.0f, 12.0f));
-                ^
-program_source:6:11: warning: unused variable 'v' [-Wunused-variable]
-  half3x4 v = half3x4(u);
-          ^
-
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
index f25d56b..2e3a689 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half4x2 m() {
-  t = (t + 1.0h);
+half4x2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0h);
   return half4x2(half2(1.0h, 2.0h), half2(3.0h, 4.0h), half2(5.0h, 6.0h), half2(7.0h, 8.0h));
 }
-void f() {
-  float4x2 v = float4x2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float4x2 v = float4x2(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:12: warning: unused variable 'v' [-Wunused-variable]
-  float4x2 v = float4x2(m());
-           ^
-
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
index 88b0d2c..c099bd4 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float4x2 m() {
-  t = (t + 1.0f);
+float4x2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0f);
   return float4x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f), float2(7.0f, 8.0f));
 }
-void f() {
-  half4x2 v = half4x2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half4x2 v = half4x2(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:11: warning: unused variable 'v' [-Wunused-variable]
-  half4x2 v = half4x2(m());
-          ^
-
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
index 1f0f180..b35cc52 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x2* u;
+};
 
-thread half4x2 u = half4x2(half2(1.0h, 2.0h), half2(3.0h, 4.0h), half2(5.0h, 6.0h), half2(7.0h, 8.0h));
-void f() {
-  float4x2 v = float4x2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float4x2 v = float4x2((*tint_module_vars.u));
 }
-program_source:4:16: error: program scope variable must reside in constant address space
-thread half4x2 u = half4x2(half2(1.0h, 2.0h), half2(3.0h, 4.0h), half2(5.0h, 6.0h), half2(7.0h, 8.0h));
-               ^
-program_source:6:12: warning: unused variable 'v' [-Wunused-variable]
-  float4x2 v = float4x2(u);
-           ^
-
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
index 71a5408..c6fb993 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x2* u;
+};
 
-thread float4x2 u = float4x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f), float2(7.0f, 8.0f));
-void f() {
-  half4x2 v = half4x2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half4x2 v = half4x2((*tint_module_vars.u));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float4x2 u = float4x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f), float2(5.0f, 6.0f), float2(7.0f, 8.0f));
-                ^
-program_source:6:11: warning: unused variable 'v' [-Wunused-variable]
-  half4x2 v = half4x2(u);
-          ^
-
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
index 73a9b26..3077905 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half4x3 m() {
-  t = (t + 1.0h);
+half4x3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0h);
   return half4x3(half3(1.0h, 2.0h, 3.0h), half3(4.0h, 5.0h, 6.0h), half3(7.0h, 8.0h, 9.0h), half3(10.0h, 11.0h, 12.0h));
 }
-void f() {
-  float4x3 v = float4x3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float4x3 v = float4x3(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:12: warning: unused variable 'v' [-Wunused-variable]
-  float4x3 v = float4x3(m());
-           ^
-
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
index d114c7e..ad8e282 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float4x3 m() {
-  t = (t + 1.0f);
+float4x3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0f);
   return float4x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f), float3(10.0f, 11.0f, 12.0f));
 }
-void f() {
-  half4x3 v = half4x3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half4x3 v = half4x3(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:11: warning: unused variable 'v' [-Wunused-variable]
-  half4x3 v = half4x3(m());
-          ^
-
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
index 194b990..a391938 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x3* u;
+};
 
-thread half4x3 u = half4x3(half3(1.0h, 2.0h, 3.0h), half3(4.0h, 5.0h, 6.0h), half3(7.0h, 8.0h, 9.0h), half3(10.0h, 11.0h, 12.0h));
-void f() {
-  float4x3 v = float4x3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float4x3 v = float4x3((*tint_module_vars.u));
 }
-program_source:4:16: error: program scope variable must reside in constant address space
-thread half4x3 u = half4x3(half3(1.0h, 2.0h, 3.0h), half3(4.0h, 5.0h, 6.0h), half3(7.0h, 8.0h, 9.0h), half3(10.0h, 11.0h, 12.0h));
-               ^
-program_source:6:12: warning: unused variable 'v' [-Wunused-variable]
-  float4x3 v = float4x3(u);
-           ^
-
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
index 14eb949..9ced453 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x3* u;
+};
 
-thread float4x3 u = float4x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f), float3(10.0f, 11.0f, 12.0f));
-void f() {
-  half4x3 v = half4x3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half4x3 v = half4x3((*tint_module_vars.u));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float4x3 u = float4x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f), float3(10.0f, 11.0f, 12.0f));
-                ^
-program_source:6:11: warning: unused variable 'v' [-Wunused-variable]
-  half4x3 v = half4x3(u);
-          ^
-
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
index 3a778cc..5b95243 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half4x4 m() {
-  t = (t + 1.0h);
+half4x4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0h);
   return half4x4(half4(1.0h, 2.0h, 3.0h, 4.0h), half4(5.0h, 6.0h, 7.0h, 8.0h), half4(9.0h, 10.0h, 11.0h, 12.0h), half4(13.0h, 14.0h, 15.0h, 16.0h));
 }
-void f() {
-  float4x4 v = float4x4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float4x4 v = float4x4(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:12: warning: unused variable 'v' [-Wunused-variable]
-  float4x4 v = float4x4(m());
-           ^
-
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
index 7a1413d..b840e75 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float4x4 m() {
-  t = (t + 1.0f);
+float4x4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = ((*tint_module_vars.t) + 1.0f);
   return float4x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f), float4(9.0f, 10.0f, 11.0f, 12.0f), float4(13.0f, 14.0f, 15.0f, 16.0f));
 }
-void f() {
-  half4x4 v = half4x4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half4x4 v = half4x4(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:11: warning: unused variable 'v' [-Wunused-variable]
-  half4x4 v = half4x4(m());
-          ^
-
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
index b61f23a..a3676b5 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x4* u;
+};
 
-thread half4x4 u = half4x4(half4(1.0h, 2.0h, 3.0h, 4.0h), half4(5.0h, 6.0h, 7.0h, 8.0h), half4(9.0h, 10.0h, 11.0h, 12.0h), half4(13.0h, 14.0h, 15.0h, 16.0h));
-void f() {
-  float4x4 v = float4x4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float4x4 v = float4x4((*tint_module_vars.u));
 }
-program_source:4:16: error: program scope variable must reside in constant address space
-thread half4x4 u = half4x4(half4(1.0h, 2.0h, 3.0h, 4.0h), half4(5.0h, 6.0h, 7.0h, 8.0h), half4(9.0h, 10.0h, 11.0h, 12.0h), half4(13.0h, 14.0h, 15.0h, 16.0h));
-               ^
-program_source:6:12: warning: unused variable 'v' [-Wunused-variable]
-  float4x4 v = float4x4(u);
-           ^
-
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
index c7875aa3..62f1f60 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x4* u;
+};
 
-thread float4x4 u = float4x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f), float4(9.0f, 10.0f, 11.0f, 12.0f), float4(13.0f, 14.0f, 15.0f, 16.0f));
-void f() {
-  half4x4 v = half4x4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half4x4 v = half4x4((*tint_module_vars.u));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float4x4 u = float4x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f), float4(9.0f, 10.0f, 11.0f, 12.0f), float4(13.0f, 14.0f, 15.0f, 16.0f));
-                ^
-program_source:6:11: warning: unused variable 'v' [-Wunused-variable]
-  half4x4 v = half4x4(u);
-          ^
-
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
index 78dcb64..ea968ae 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool m() {
-  t = true;
-  return bool(t);
+bool m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool((*tint_module_vars.t));
 }
-void f() {
-  half v = half(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half v = half(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  half v = half(m());
-       ^
-
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
index 24c12d2..43ead61 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool m() {
-  t = true;
-  return bool(t);
+bool m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool((*tint_module_vars.t));
 }
-void f() {
-  float v = float(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float v = float(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  float v = float(m());
-        ^
-
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
index d514d77..87f134a 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool m() {
-  t = true;
-  return bool(t);
+bool m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool((*tint_module_vars.t));
 }
-void f() {
-  int v = int(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  int v = int(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:7: warning: unused variable 'v' [-Wunused-variable]
-  int v = int(m());
-      ^
-
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
index 96dea8f..9f774ee 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool m() {
-  t = true;
-  return bool(t);
+bool m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool((*tint_module_vars.t));
 }
-void f() {
-  uint v = uint(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  uint v = uint(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  uint v = uint(m());
-       ^
-
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
index d3ee187..64e2fae 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half m() {
-  t = 1.0h;
-  return half(t);
+half m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half((*tint_module_vars.t));
 }
-void f() {
-  bool v = bool(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool v = bool(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  bool v = bool(m());
-       ^
-
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
index 564ef4d..18585e2 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half m() {
-  t = 1.0h;
-  return half(t);
+half m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half((*tint_module_vars.t));
 }
-void f() {
-  float v = float(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float v = float(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  float v = float(m());
-        ^
-
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
index e68341c..710bfb0 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half m() {
-  t = 1.0h;
-  return half(t);
-}
-void f() {
-  int v = tint_f16_to_i32(m());
+half m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half((*tint_module_vars.t));
 }
 int tint_f16_to_i32(half value) {
   return select(2147483647, select((-2147483647 - 1), int(value), (value >= -65504.0h)), (value <= 65504.0h));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:11: error: use of undeclared identifier 'tint_f16_to_i32'
-  int v = tint_f16_to_i32(m());
-          ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int v = tint_f16_to_i32(m(tint_module_vars));
+}
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
index 68eb209..8199af1 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half m() {
-  t = 1.0h;
-  return half(t);
-}
-void f() {
-  uint v = tint_f16_to_u32(m());
+half m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half((*tint_module_vars.t));
 }
 uint tint_f16_to_u32(half value) {
   return select(4294967295u, select(0u, uint(value), (value >= 0.0h)), (value <= 65504.0h));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:12: error: use of undeclared identifier 'tint_f16_to_u32'
-  uint v = tint_f16_to_u32(m());
-           ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint v = tint_f16_to_u32(m(tint_module_vars));
+}
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
index ad3f327..e207b16 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float m() {
-  t = 1.0f;
-  return float(t);
+float m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float((*tint_module_vars.t));
 }
-void f() {
-  bool v = bool(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool v = bool(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  bool v = bool(m());
-       ^
-
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
index aa75a86..1112458 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float m() {
-  t = 1.0f;
-  return float(t);
+float m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float((*tint_module_vars.t));
 }
-void f() {
-  half v = half(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half v = half(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  half v = half(m());
-       ^
-
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
index adb9d94..30bf127 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float m() {
-  t = 1.0f;
-  return float(t);
-}
-void f() {
-  int v = tint_f32_to_i32(m());
+float m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float((*tint_module_vars.t));
 }
 int tint_f32_to_i32(float value) {
   return select(2147483647, select((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:11: error: use of undeclared identifier 'tint_f32_to_i32'
-  int v = tint_f32_to_i32(m());
-          ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int v = tint_f32_to_i32(m(tint_module_vars));
+}
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
index 39a5e78..4617609 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float m() {
-  t = 1.0f;
-  return float(t);
-}
-void f() {
-  uint v = tint_f32_to_u32(m());
+float m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float((*tint_module_vars.t));
 }
 uint tint_f32_to_u32(float value) {
   return select(4294967295u, select(0u, uint(value), (value >= 0.0f)), (value <= 4294967040.0f));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:12: error: use of undeclared identifier 'tint_f32_to_u32'
-  uint v = tint_f32_to_u32(m());
-           ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint v = tint_f32_to_u32(m(tint_module_vars));
+}
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
index 5612162..287ccf1 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int m() {
-  t = 1;
-  return int(t);
+int m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int((*tint_module_vars.t));
 }
-void f() {
-  bool v = bool(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool v = bool(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  bool v = bool(m());
-       ^
-
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
index 5fd4bbe..39c5c68 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int m() {
-  t = 1;
-  return int(t);
+int m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int((*tint_module_vars.t));
 }
-void f() {
-  half v = half(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half v = half(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  half v = half(m());
-       ^
-
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
index ee12374..f0a891c 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int m() {
-  t = 1;
-  return int(t);
+int m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int((*tint_module_vars.t));
 }
-void f() {
-  float v = float(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float v = float(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  float v = float(m());
-        ^
-
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
index 02f7b22..6dd5bb7 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int m() {
-  t = 1;
-  return int(t);
+int m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int((*tint_module_vars.t));
 }
-void f() {
-  uint v = uint(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  uint v = uint(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  uint v = uint(m());
-       ^
-
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
index 1d846fd..df9ebeb 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint m() {
-  t = 1u;
-  return uint(t);
+uint m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint((*tint_module_vars.t));
 }
-void f() {
-  bool v = bool(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool v = bool(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  bool v = bool(m());
-       ^
-
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
index fc7c978..26ee4e1 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint m() {
-  t = 1u;
-  return uint(t);
+uint m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint((*tint_module_vars.t));
 }
-void f() {
-  half v = half(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half v = half(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  half v = half(m());
-       ^
-
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
index 3e47710..368b830 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint m() {
-  t = 1u;
-  return uint(t);
+uint m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint((*tint_module_vars.t));
 }
-void f() {
-  float v = float(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float v = float(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  float v = float(m());
-        ^
-
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
index 17d1d2d..48d6421 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint m() {
-  t = 1u;
-  return uint(t);
+uint m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint((*tint_module_vars.t));
 }
-void f() {
-  int v = int(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  int v = int(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:7: warning: unused variable 'v' [-Wunused-variable]
-  int v = int(m());
-      ^
-
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
index 9a7c7a3..2a3cb49 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* u;
+};
 
-thread bool u = true;
-void f() {
-  half const v = half(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half const v = half((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool u = true;
-            ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  half const v = half(u);
-             ^
-
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
index 7a39c4e..6faf18a 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* u;
+};
 
-thread bool u = true;
-void f() {
-  float const v = float(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float const v = float((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool u = true;
-            ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  float const v = float(u);
-              ^
-
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
index a1bd4a1..32cef3a 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* u;
+};
 
-thread bool u = true;
-void f() {
-  int const v = int(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  int const v = int((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool u = true;
-            ^
-program_source:6:13: warning: unused variable 'v' [-Wunused-variable]
-  int const v = int(u);
-            ^
-
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
index 6ac5d0b..33e425f 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* u;
+};
 
-thread bool u = true;
-void f() {
-  uint const v = uint(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  uint const v = uint((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool u = true;
-            ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  uint const v = uint(u);
-             ^
-
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
index d8c8d05..bcb46ed 100644
--- 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
@@ -5,5 +5,5 @@
 };
 
 void f(tint_module_vars_struct tint_module_vars) {
-  bool const v = bool(tint_module_vars.u);
+  bool const v = bool((*tint_module_vars.u));
 }
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
index 5cae5f8..4531216 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* u;
+};
 
-thread half u = 1.0h;
-void f() {
-  float const v = float(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float const v = float((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half u = 1.0h;
-            ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  float const v = float(u);
-              ^
-
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
index 1ac2537..79967eb 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* u;
+};
 
-thread half u = 1.0h;
-void f() {
-  int const v = tint_f16_to_i32(u);
-}
 int tint_f16_to_i32(half value) {
   return select(2147483647, select((-2147483647 - 1), int(value), (value >= -65504.0h)), (value <= 65504.0h));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half u = 1.0h;
-            ^
-program_source:6:13: warning: unused variable 'v' [-Wunused-variable]
-  int const v = tint_f16_to_i32(u);
-            ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int const v = tint_f16_to_i32((*tint_module_vars.u));
+}
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
index 15500f0..eb20c3b 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* u;
+};
 
-thread half u = 1.0h;
-void f() {
-  uint const v = tint_f16_to_u32(u);
-}
 uint tint_f16_to_u32(half value) {
   return select(4294967295u, select(0u, uint(value), (value >= 0.0h)), (value <= 65504.0h));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half u = 1.0h;
-            ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  uint const v = tint_f16_to_u32(u);
-             ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint const v = tint_f16_to_u32((*tint_module_vars.u));
+}
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
index 9a5de22..99e3171 100644
--- 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
@@ -5,5 +5,5 @@
 };
 
 void f(tint_module_vars_struct tint_module_vars) {
-  bool const v = bool(tint_module_vars.u);
+  bool const v = bool((*tint_module_vars.u));
 }
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
index 416fc94..86c5eba 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* u;
+};
 
-thread float u = 1.0f;
-void f() {
-  half const v = half(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half const v = half((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float u = 1.0f;
-             ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  half const v = half(u);
-             ^
-
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
index 0b8ec9b..cae04b2 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* u;
+};
 
-thread float u = 1.0f;
-void f() {
-  int const v = tint_f32_to_i32(u);
-}
 int tint_f32_to_i32(float value) {
   return select(2147483647, select((-2147483647 - 1), int(value), (value >= -2147483648.0f)), (value <= 2147483520.0f));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float u = 1.0f;
-             ^
-program_source:6:13: warning: unused variable 'v' [-Wunused-variable]
-  int const v = tint_f32_to_i32(u);
-            ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int const v = tint_f32_to_i32((*tint_module_vars.u));
+}
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
index 63e7c30..226bac9 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* u;
+};
 
-thread float u = 1.0f;
-void f() {
-  uint const v = tint_f32_to_u32(u);
-}
 uint tint_f32_to_u32(float value) {
   return select(4294967295u, select(0u, uint(value), (value >= 0.0f)), (value <= 4294967040.0f));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float u = 1.0f;
-             ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  uint const v = tint_f32_to_u32(u);
-             ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint const v = tint_f32_to_u32((*tint_module_vars.u));
+}
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
index 0c06b00..b2bd7f2 100644
--- 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
@@ -5,5 +5,5 @@
 };
 
 void f(tint_module_vars_struct tint_module_vars) {
-  bool const v = bool(tint_module_vars.u);
+  bool const v = bool((*tint_module_vars.u));
 }
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
index c3c8bd3..3bf9a52 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* u;
+};
 
-thread int u = 1;
-void f() {
-  half const v = half(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half const v = half((*tint_module_vars.u));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int u = 1;
-           ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  half const v = half(u);
-             ^
-
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
index 2ed4a9f..dddba83 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* u;
+};
 
-thread int u = 1;
-void f() {
-  float const v = float(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float const v = float((*tint_module_vars.u));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int u = 1;
-           ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  float const v = float(u);
-              ^
-
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
index 60d815a..a359ac9 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* u;
+};
 
-thread int u = 1;
-void f() {
-  uint const v = uint(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  uint const v = uint((*tint_module_vars.u));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int u = 1;
-           ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  uint const v = uint(u);
-             ^
-
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
index 8fbccf1..cbdeeed 100644
--- 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
@@ -5,5 +5,5 @@
 };
 
 void f(tint_module_vars_struct tint_module_vars) {
-  bool const v = bool(tint_module_vars.u);
+  bool const v = bool((*tint_module_vars.u));
 }
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
index a78cc38..131ac6b 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* u;
+};
 
-thread uint u = 1u;
-void f() {
-  half const v = half(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half const v = half((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint u = 1u;
-            ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  half const v = half(u);
-             ^
-
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
index 4c78dc5..d2cfd2b 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* u;
+};
 
-thread uint u = 1u;
-void f() {
-  float const v = float(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float const v = float((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint u = 1u;
-            ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  float const v = float(u);
-              ^
-
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
index 64fe8bd..c58215e 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* u;
+};
 
-thread uint u = 1u;
-void f() {
-  int const v = int(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  int const v = int((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint u = 1u;
-            ^
-program_source:6:13: warning: unused variable 'v' [-Wunused-variable]
-  int const v = int(u);
-            ^
-
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
index c262dd1..47f7225 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool2 m() {
-  t = true;
-  return bool2(t);
+bool2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool2((*tint_module_vars.t));
 }
-void f() {
-  half2 v = half2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half2 v = half2(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  half2 v = half2(m());
-        ^
-
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
index ca2cdfd..9000223 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool2 m() {
-  t = true;
-  return bool2(t);
+bool2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool2((*tint_module_vars.t));
 }
-void f() {
-  float2 v = float2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float2 v = float2(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:10: warning: unused variable 'v' [-Wunused-variable]
-  float2 v = float2(m());
-         ^
-
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
index 3e19b0d..7e17be1 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool2 m() {
-  t = true;
-  return bool2(t);
+bool2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool2((*tint_module_vars.t));
 }
-void f() {
-  int2 v = int2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  int2 v = int2(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  int2 v = int2(m());
-       ^
-
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
index 43dba17..8c1eabd 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool2 m() {
-  t = true;
-  return bool2(t);
+bool2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool2((*tint_module_vars.t));
 }
-void f() {
-  uint2 v = uint2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  uint2 v = uint2(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  uint2 v = uint2(m());
-        ^
-
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
index f8b94b4..3cd239c 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half2 m() {
-  t = 1.0h;
-  return half2(t);
+half2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half2((*tint_module_vars.t));
 }
-void f() {
-  bool2 v = bool2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool2 v = bool2(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  bool2 v = bool2(m());
-        ^
-
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
index fece1f4..aa10c25 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half2 m() {
-  t = 1.0h;
-  return half2(t);
+half2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half2((*tint_module_vars.t));
 }
-void f() {
-  float2 v = float2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float2 v = float2(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:10: warning: unused variable 'v' [-Wunused-variable]
-  float2 v = float2(m());
-         ^
-
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
index c0e0044..5ec16e6 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half2 m() {
-  t = 1.0h;
-  return half2(t);
-}
-void f() {
-  int2 v = tint_v2f16_to_v2i32(m());
+half2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half2((*tint_module_vars.t));
 }
 int2 tint_v2f16_to_v2i32(half2 value) {
   return select(int2(2147483647), select(int2((-2147483647 - 1)), int2(value), (value >= half2(-65504.0h))), (value <= half2(65504.0h)));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:12: error: use of undeclared identifier 'tint_v2f16_to_v2i32'
-  int2 v = tint_v2f16_to_v2i32(m());
-           ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int2 v = tint_v2f16_to_v2i32(m(tint_module_vars));
+}
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
index cbb012e..fde1980 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half2 m() {
-  t = 1.0h;
-  return half2(t);
-}
-void f() {
-  uint2 v = tint_v2f16_to_v2u32(m());
+half2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half2((*tint_module_vars.t));
 }
 uint2 tint_v2f16_to_v2u32(half2 value) {
   return select(uint2(4294967295u), select(uint2(0u), uint2(value), (value >= half2(0.0h))), (value <= half2(65504.0h)));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:13: error: use of undeclared identifier 'tint_v2f16_to_v2u32'
-  uint2 v = tint_v2f16_to_v2u32(m());
-            ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint2 v = tint_v2f16_to_v2u32(m(tint_module_vars));
+}
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
index 04cd450..c86f1fc 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float2 m() {
-  t = 1.0f;
-  return float2(t);
+float2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float2((*tint_module_vars.t));
 }
-void f() {
-  bool2 v = bool2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool2 v = bool2(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  bool2 v = bool2(m());
-        ^
-
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
index 0facd6b..9b780cf 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float2 m() {
-  t = 1.0f;
-  return float2(t);
+float2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float2((*tint_module_vars.t));
 }
-void f() {
-  half2 v = half2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half2 v = half2(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  half2 v = half2(m());
-        ^
-
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
index dfc7adb..8baf26f 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float2 m() {
-  t = 1.0f;
-  return float2(t);
-}
-void f() {
-  int2 v = tint_v2f32_to_v2i32(m());
+float2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float2((*tint_module_vars.t));
 }
 int2 tint_v2f32_to_v2i32(float2 value) {
   return select(int2(2147483647), select(int2((-2147483647 - 1)), int2(value), (value >= float2(-2147483648.0f))), (value <= float2(2147483520.0f)));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:12: error: use of undeclared identifier 'tint_v2f32_to_v2i32'
-  int2 v = tint_v2f32_to_v2i32(m());
-           ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int2 v = tint_v2f32_to_v2i32(m(tint_module_vars));
+}
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
index 3d47e8d..54207ba 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float2 m() {
-  t = 1.0f;
-  return float2(t);
-}
-void f() {
-  uint2 v = tint_v2f32_to_v2u32(m());
+float2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float2((*tint_module_vars.t));
 }
 uint2 tint_v2f32_to_v2u32(float2 value) {
   return select(uint2(4294967295u), select(uint2(0u), uint2(value), (value >= float2(0.0f))), (value <= float2(4294967040.0f)));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:13: error: use of undeclared identifier 'tint_v2f32_to_v2u32'
-  uint2 v = tint_v2f32_to_v2u32(m());
-            ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint2 v = tint_v2f32_to_v2u32(m(tint_module_vars));
+}
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
index a9f5542..034bb5c 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int2 m() {
-  t = 1;
-  return int2(t);
+int2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int2((*tint_module_vars.t));
 }
-void f() {
-  bool2 v = bool2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool2 v = bool2(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  bool2 v = bool2(m());
-        ^
-
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
index efb482f..ad6e58a 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int2 m() {
-  t = 1;
-  return int2(t);
+int2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int2((*tint_module_vars.t));
 }
-void f() {
-  half2 v = half2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half2 v = half2(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  half2 v = half2(m());
-        ^
-
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
index 6c9a42f..fe84b0d 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int2 m() {
-  t = 1;
-  return int2(t);
+int2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int2((*tint_module_vars.t));
 }
-void f() {
-  float2 v = float2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float2 v = float2(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:10: warning: unused variable 'v' [-Wunused-variable]
-  float2 v = float2(m());
-         ^
-
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
index b5a1283..cf4b7f7 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int2 m() {
-  t = 1;
-  return int2(t);
+int2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int2((*tint_module_vars.t));
 }
-void f() {
-  uint2 v = uint2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  uint2 v = uint2(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  uint2 v = uint2(m());
-        ^
-
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
index e986a96..2633e1b 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint2 m() {
-  t = 1u;
-  return uint2(t);
+uint2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint2((*tint_module_vars.t));
 }
-void f() {
-  bool2 v = bool2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool2 v = bool2(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  bool2 v = bool2(m());
-        ^
-
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
index 8ca1118..74bb6c4 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint2 m() {
-  t = 1u;
-  return uint2(t);
+uint2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint2((*tint_module_vars.t));
 }
-void f() {
-  half2 v = half2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half2 v = half2(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  half2 v = half2(m());
-        ^
-
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
index 25abd48..680e7f2 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint2 m() {
-  t = 1u;
-  return uint2(t);
+uint2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint2((*tint_module_vars.t));
 }
-void f() {
-  float2 v = float2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float2 v = float2(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:10: warning: unused variable 'v' [-Wunused-variable]
-  float2 v = float2(m());
-         ^
-
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
index 57e6e8d..489b7cb 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint2 m() {
-  t = 1u;
-  return uint2(t);
+uint2 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint2((*tint_module_vars.t));
 }
-void f() {
-  int2 v = int2(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  int2 v = int2(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  int2 v = int2(m());
-       ^
-
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
index 1a5995a..2542c75 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool2* u;
+};
 
-thread bool2 u = bool2(true);
-void f() {
-  half2 const v = half2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half2 const v = half2((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread bool2 u = bool2(true);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  half2 const v = half2(u);
-              ^
-
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
index e706de1..9876be7 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool2* u;
+};
 
-thread bool2 u = bool2(true);
-void f() {
-  float2 const v = float2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float2 const v = float2((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread bool2 u = bool2(true);
-             ^
-program_source:6:16: warning: unused variable 'v' [-Wunused-variable]
-  float2 const v = float2(u);
-               ^
-
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
index 5fc4c3a..635468b 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool2* u;
+};
 
-thread bool2 u = bool2(true);
-void f() {
-  int2 const v = int2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  int2 const v = int2((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread bool2 u = bool2(true);
-             ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  int2 const v = int2(u);
-             ^
-
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
index 109a7aa..47d1315 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool2* u;
+};
 
-thread bool2 u = bool2(true);
-void f() {
-  uint2 const v = uint2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  uint2 const v = uint2((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread bool2 u = bool2(true);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  uint2 const v = uint2(u);
-              ^
-
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
index 9201bc2..8daf19b 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half2* u;
+};
 
-thread half2 u = half2(1.0h);
-void f() {
-  bool2 const v = bool2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  bool2 const v = bool2((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread half2 u = half2(1.0h);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  bool2 const v = bool2(u);
-              ^
-
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
index 87084ed..633e572 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half2* u;
+};
 
-thread half2 u = half2(1.0h);
-void f() {
-  float2 const v = float2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float2 const v = float2((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread half2 u = half2(1.0h);
-             ^
-program_source:6:16: warning: unused variable 'v' [-Wunused-variable]
-  float2 const v = float2(u);
-               ^
-
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
index 5b84480..98dda5c 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half2* u;
+};
 
-thread half2 u = half2(1.0h);
-void f() {
-  int2 const v = tint_v2f16_to_v2i32(u);
-}
 int2 tint_v2f16_to_v2i32(half2 value) {
   return select(int2(2147483647), select(int2((-2147483647 - 1)), int2(value), (value >= half2(-65504.0h))), (value <= half2(65504.0h)));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread half2 u = half2(1.0h);
-             ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  int2 const v = tint_v2f16_to_v2i32(u);
-             ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int2 const v = tint_v2f16_to_v2i32((*tint_module_vars.u));
+}
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
index e95e7b0..8cb59b8 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half2* u;
+};
 
-thread half2 u = half2(1.0h);
-void f() {
-  uint2 const v = tint_v2f16_to_v2u32(u);
-}
 uint2 tint_v2f16_to_v2u32(half2 value) {
   return select(uint2(4294967295u), select(uint2(0u), uint2(value), (value >= half2(0.0h))), (value <= half2(65504.0h)));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread half2 u = half2(1.0h);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  uint2 const v = tint_v2f16_to_v2u32(u);
-              ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint2 const v = tint_v2f16_to_v2u32((*tint_module_vars.u));
+}
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
index ed83e61..411f1fc 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2* u;
+};
 
-thread float2 u = float2(1.0f);
-void f() {
-  bool2 const v = bool2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  bool2 const v = bool2((*tint_module_vars.u));
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float2 u = float2(1.0f);
-              ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  bool2 const v = bool2(u);
-              ^
-
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
index 8c74b04..b532bc5 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2* u;
+};
 
-thread float2 u = float2(1.0f);
-void f() {
-  half2 const v = half2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half2 const v = half2((*tint_module_vars.u));
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float2 u = float2(1.0f);
-              ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  half2 const v = half2(u);
-              ^
-
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
index 9a98687..acea322 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2* u;
+};
 
-thread float2 u = float2(1.0f);
-void f() {
-  int2 const v = tint_v2f32_to_v2i32(u);
-}
 int2 tint_v2f32_to_v2i32(float2 value) {
   return select(int2(2147483647), select(int2((-2147483647 - 1)), int2(value), (value >= float2(-2147483648.0f))), (value <= float2(2147483520.0f)));
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float2 u = float2(1.0f);
-              ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  int2 const v = tint_v2f32_to_v2i32(u);
-             ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int2 const v = tint_v2f32_to_v2i32((*tint_module_vars.u));
+}
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
index 5b30270..cf0d225 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2* u;
+};
 
-thread float2 u = float2(1.0f);
-void f() {
-  uint2 const v = tint_v2f32_to_v2u32(u);
-}
 uint2 tint_v2f32_to_v2u32(float2 value) {
   return select(uint2(4294967295u), select(uint2(0u), uint2(value), (value >= float2(0.0f))), (value <= float2(4294967040.0f)));
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float2 u = float2(1.0f);
-              ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  uint2 const v = tint_v2f32_to_v2u32(u);
-              ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint2 const v = tint_v2f32_to_v2u32((*tint_module_vars.u));
+}
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
index 30d4554..aad8722 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int2* u;
+};
 
-thread int2 u = int2(1);
-void f() {
-  bool2 const v = bool2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  bool2 const v = bool2((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int2 u = int2(1);
-            ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  bool2 const v = bool2(u);
-              ^
-
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
index e24f750..36cb827 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int2* u;
+};
 
-thread int2 u = int2(1);
-void f() {
-  half2 const v = half2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half2 const v = half2((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int2 u = int2(1);
-            ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  half2 const v = half2(u);
-              ^
-
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
index ef6c69a..5611f80 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int2* u;
+};
 
-thread int2 u = int2(1);
-void f() {
-  float2 const v = float2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float2 const v = float2((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int2 u = int2(1);
-            ^
-program_source:6:16: warning: unused variable 'v' [-Wunused-variable]
-  float2 const v = float2(u);
-               ^
-
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
index 7ece230..1eef08c 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int2* u;
+};
 
-thread int2 u = int2(1);
-void f() {
-  uint2 const v = uint2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  uint2 const v = uint2((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int2 u = int2(1);
-            ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  uint2 const v = uint2(u);
-              ^
-
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
index 80d56d6..3524d21 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint2* u;
+};
 
-thread uint2 u = uint2(1u);
-void f() {
-  bool2 const v = bool2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  bool2 const v = bool2((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint2 u = uint2(1u);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  bool2 const v = bool2(u);
-              ^
-
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
index 8f4df73..27ff77d 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint2* u;
+};
 
-thread uint2 u = uint2(1u);
-void f() {
-  half2 const v = half2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half2 const v = half2((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint2 u = uint2(1u);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  half2 const v = half2(u);
-              ^
-
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
index 9f13f4f..e32b6d9 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint2* u;
+};
 
-thread uint2 u = uint2(1u);
-void f() {
-  float2 const v = float2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float2 const v = float2((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint2 u = uint2(1u);
-             ^
-program_source:6:16: warning: unused variable 'v' [-Wunused-variable]
-  float2 const v = float2(u);
-               ^
-
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
index ae43f15..5c03dec 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint2* u;
+};
 
-thread uint2 u = uint2(1u);
-void f() {
-  int2 const v = int2(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  int2 const v = int2((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint2 u = uint2(1u);
-             ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  int2 const v = int2(u);
-             ^
-
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
index bf54750..4a4514c 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool3 m() {
-  t = true;
-  return bool3(t);
+bool3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool3((*tint_module_vars.t));
 }
-void f() {
-  half3 v = half3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half3 v = half3(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  half3 v = half3(m());
-        ^
-
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
index bb165f6..d72ef56 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool3 m() {
-  t = true;
-  return bool3(t);
+bool3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool3((*tint_module_vars.t));
 }
-void f() {
-  float3 v = float3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float3 v = float3(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:10: warning: unused variable 'v' [-Wunused-variable]
-  float3 v = float3(m());
-         ^
-
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
index 844ae7a..e1421cb 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool3 m() {
-  t = true;
-  return bool3(t);
+bool3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool3((*tint_module_vars.t));
 }
-void f() {
-  int3 v = int3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  int3 v = int3(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  int3 v = int3(m());
-       ^
-
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
index 2f0b369..e4075b5 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool3 m() {
-  t = true;
-  return bool3(t);
+bool3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool3((*tint_module_vars.t));
 }
-void f() {
-  uint3 v = uint3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  uint3 v = uint3(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  uint3 v = uint3(m());
-        ^
-
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
index 3def4e4..c2b7218 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half3 m() {
-  t = 1.0h;
-  return half3(t);
+half3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half3((*tint_module_vars.t));
 }
-void f() {
-  bool3 v = bool3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool3 v = bool3(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  bool3 v = bool3(m());
-        ^
-
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
index 0ae8001..0495cd3 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half3 m() {
-  t = 1.0h;
-  return half3(t);
+half3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half3((*tint_module_vars.t));
 }
-void f() {
-  float3 v = float3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float3 v = float3(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:10: warning: unused variable 'v' [-Wunused-variable]
-  float3 v = float3(m());
-         ^
-
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
index d4bc367..793b8b7 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half3 m() {
-  t = 1.0h;
-  return half3(t);
-}
-void f() {
-  int3 v = tint_v3f16_to_v3i32(m());
+half3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half3((*tint_module_vars.t));
 }
 int3 tint_v3f16_to_v3i32(half3 value) {
   return select(int3(2147483647), select(int3((-2147483647 - 1)), int3(value), (value >= half3(-65504.0h))), (value <= half3(65504.0h)));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:12: error: use of undeclared identifier 'tint_v3f16_to_v3i32'
-  int3 v = tint_v3f16_to_v3i32(m());
-           ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int3 v = tint_v3f16_to_v3i32(m(tint_module_vars));
+}
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
index 1efe82d..f1ccea7 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half3 m() {
-  t = 1.0h;
-  return half3(t);
-}
-void f() {
-  uint3 v = tint_v3f16_to_v3u32(m());
+half3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half3((*tint_module_vars.t));
 }
 uint3 tint_v3f16_to_v3u32(half3 value) {
   return select(uint3(4294967295u), select(uint3(0u), uint3(value), (value >= half3(0.0h))), (value <= half3(65504.0h)));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:13: error: use of undeclared identifier 'tint_v3f16_to_v3u32'
-  uint3 v = tint_v3f16_to_v3u32(m());
-            ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint3 v = tint_v3f16_to_v3u32(m(tint_module_vars));
+}
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
index 13c4b62..e0a199e 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float3 m() {
-  t = 1.0f;
-  return float3(t);
+float3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float3((*tint_module_vars.t));
 }
-void f() {
-  bool3 v = bool3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool3 v = bool3(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  bool3 v = bool3(m());
-        ^
-
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
index 0ea1407..51facac 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float3 m() {
-  t = 1.0f;
-  return float3(t);
+float3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float3((*tint_module_vars.t));
 }
-void f() {
-  half3 v = half3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half3 v = half3(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  half3 v = half3(m());
-        ^
-
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
index fe64085..bfe740c 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float3 m() {
-  t = 1.0f;
-  return float3(t);
-}
-void f() {
-  int3 v = tint_v3f32_to_v3i32(m());
+float3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float3((*tint_module_vars.t));
 }
 int3 tint_v3f32_to_v3i32(float3 value) {
   return select(int3(2147483647), select(int3((-2147483647 - 1)), int3(value), (value >= float3(-2147483648.0f))), (value <= float3(2147483520.0f)));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:12: error: use of undeclared identifier 'tint_v3f32_to_v3i32'
-  int3 v = tint_v3f32_to_v3i32(m());
-           ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int3 v = tint_v3f32_to_v3i32(m(tint_module_vars));
+}
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
index 15b7591..fb43d64 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float3 m() {
-  t = 1.0f;
-  return float3(t);
-}
-void f() {
-  uint3 v = tint_v3f32_to_v3u32(m());
+float3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float3((*tint_module_vars.t));
 }
 uint3 tint_v3f32_to_v3u32(float3 value) {
   return select(uint3(4294967295u), select(uint3(0u), uint3(value), (value >= float3(0.0f))), (value <= float3(4294967040.0f)));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:13: error: use of undeclared identifier 'tint_v3f32_to_v3u32'
-  uint3 v = tint_v3f32_to_v3u32(m());
-            ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint3 v = tint_v3f32_to_v3u32(m(tint_module_vars));
+}
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
index 0266ae4..a66b47b 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int3 m() {
-  t = 1;
-  return int3(t);
+int3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int3((*tint_module_vars.t));
 }
-void f() {
-  bool3 v = bool3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool3 v = bool3(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  bool3 v = bool3(m());
-        ^
-
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
index 39dccf2..21ec04a 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int3 m() {
-  t = 1;
-  return int3(t);
+int3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int3((*tint_module_vars.t));
 }
-void f() {
-  half3 v = half3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half3 v = half3(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  half3 v = half3(m());
-        ^
-
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
index e6eded8..d45ffaf 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int3 m() {
-  t = 1;
-  return int3(t);
+int3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int3((*tint_module_vars.t));
 }
-void f() {
-  float3 v = float3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float3 v = float3(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:10: warning: unused variable 'v' [-Wunused-variable]
-  float3 v = float3(m());
-         ^
-
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
index a08fb57..6aafae6 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int3 m() {
-  t = 1;
-  return int3(t);
+int3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int3((*tint_module_vars.t));
 }
-void f() {
-  uint3 v = uint3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  uint3 v = uint3(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  uint3 v = uint3(m());
-        ^
-
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
index e7557f0..28f4a79 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint3 m() {
-  t = 1u;
-  return uint3(t);
+uint3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint3((*tint_module_vars.t));
 }
-void f() {
-  bool3 v = bool3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool3 v = bool3(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  bool3 v = bool3(m());
-        ^
-
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
index 3a19e1c..3867ddd 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint3 m() {
-  t = 1u;
-  return uint3(t);
+uint3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint3((*tint_module_vars.t));
 }
-void f() {
-  half3 v = half3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half3 v = half3(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  half3 v = half3(m());
-        ^
-
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
index d17e18e..0e1a62e 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint3 m() {
-  t = 1u;
-  return uint3(t);
+uint3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint3((*tint_module_vars.t));
 }
-void f() {
-  float3 v = float3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float3 v = float3(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:10: warning: unused variable 'v' [-Wunused-variable]
-  float3 v = float3(m());
-         ^
-
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
index 0dda7ac..8db1b68 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint3 m() {
-  t = 1u;
-  return uint3(t);
+uint3 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint3((*tint_module_vars.t));
 }
-void f() {
-  int3 v = int3(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  int3 v = int3(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  int3 v = int3(m());
-       ^
-
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
index d64b875..557081d 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool3* u;
+};
 
-thread bool3 u = bool3(true);
-void f() {
-  half3 const v = half3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half3 const v = half3((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread bool3 u = bool3(true);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  half3 const v = half3(u);
-              ^
-
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
index 0c66595..966e0d4 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool3* u;
+};
 
-thread bool3 u = bool3(true);
-void f() {
-  float3 const v = float3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float3 const v = float3((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread bool3 u = bool3(true);
-             ^
-program_source:6:16: warning: unused variable 'v' [-Wunused-variable]
-  float3 const v = float3(u);
-               ^
-
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
index 54dc6c7..6563fbb 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool3* u;
+};
 
-thread bool3 u = bool3(true);
-void f() {
-  int3 const v = int3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  int3 const v = int3((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread bool3 u = bool3(true);
-             ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  int3 const v = int3(u);
-             ^
-
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
index b9c2e9f..1d3f717 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool3* u;
+};
 
-thread bool3 u = bool3(true);
-void f() {
-  uint3 const v = uint3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  uint3 const v = uint3((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread bool3 u = bool3(true);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  uint3 const v = uint3(u);
-              ^
-
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
index db580cb..aad8265 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half3* u;
+};
 
-thread half3 u = half3(1.0h);
-void f() {
-  bool3 const v = bool3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  bool3 const v = bool3((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread half3 u = half3(1.0h);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  bool3 const v = bool3(u);
-              ^
-
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
index fa83c74..224689d 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half3* u;
+};
 
-thread half3 u = half3(1.0h);
-void f() {
-  float3 const v = float3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float3 const v = float3((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread half3 u = half3(1.0h);
-             ^
-program_source:6:16: warning: unused variable 'v' [-Wunused-variable]
-  float3 const v = float3(u);
-               ^
-
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
index bdd22f9..1dc56ec 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half3* u;
+};
 
-thread half3 u = half3(1.0h);
-void f() {
-  int3 const v = tint_v3f16_to_v3i32(u);
-}
 int3 tint_v3f16_to_v3i32(half3 value) {
   return select(int3(2147483647), select(int3((-2147483647 - 1)), int3(value), (value >= half3(-65504.0h))), (value <= half3(65504.0h)));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread half3 u = half3(1.0h);
-             ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  int3 const v = tint_v3f16_to_v3i32(u);
-             ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int3 const v = tint_v3f16_to_v3i32((*tint_module_vars.u));
+}
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
index 6ef6399..5714331 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half3* u;
+};
 
-thread half3 u = half3(1.0h);
-void f() {
-  uint3 const v = tint_v3f16_to_v3u32(u);
-}
 uint3 tint_v3f16_to_v3u32(half3 value) {
   return select(uint3(4294967295u), select(uint3(0u), uint3(value), (value >= half3(0.0h))), (value <= half3(65504.0h)));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread half3 u = half3(1.0h);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  uint3 const v = tint_v3f16_to_v3u32(u);
-              ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint3 const v = tint_v3f16_to_v3u32((*tint_module_vars.u));
+}
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
index 6e61818..b1594fe 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float3* u;
+};
 
-thread float3 u = float3(1.0f);
-void f() {
-  bool3 const v = bool3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  bool3 const v = bool3((*tint_module_vars.u));
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float3 u = float3(1.0f);
-              ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  bool3 const v = bool3(u);
-              ^
-
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
index fce9964..2a224b9 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float3* u;
+};
 
-thread float3 u = float3(1.0f);
-void f() {
-  half3 const v = half3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half3 const v = half3((*tint_module_vars.u));
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float3 u = float3(1.0f);
-              ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  half3 const v = half3(u);
-              ^
-
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
index 90a82a1..9d81bba 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float3* u;
+};
 
-thread float3 u = float3(1.0f);
-void f() {
-  int3 const v = tint_v3f32_to_v3i32(u);
-}
 int3 tint_v3f32_to_v3i32(float3 value) {
   return select(int3(2147483647), select(int3((-2147483647 - 1)), int3(value), (value >= float3(-2147483648.0f))), (value <= float3(2147483520.0f)));
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float3 u = float3(1.0f);
-              ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  int3 const v = tint_v3f32_to_v3i32(u);
-             ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int3 const v = tint_v3f32_to_v3i32((*tint_module_vars.u));
+}
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
index 08f0a5f..7ede6d7 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float3* u;
+};
 
-thread float3 u = float3(1.0f);
-void f() {
-  uint3 const v = tint_v3f32_to_v3u32(u);
-}
 uint3 tint_v3f32_to_v3u32(float3 value) {
   return select(uint3(4294967295u), select(uint3(0u), uint3(value), (value >= float3(0.0f))), (value <= float3(4294967040.0f)));
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float3 u = float3(1.0f);
-              ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  uint3 const v = tint_v3f32_to_v3u32(u);
-              ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint3 const v = tint_v3f32_to_v3u32((*tint_module_vars.u));
+}
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
index 75afebc..2d79c49 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int3* u;
+};
 
-thread int3 u = int3(1);
-void f() {
-  bool3 const v = bool3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  bool3 const v = bool3((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int3 u = int3(1);
-            ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  bool3 const v = bool3(u);
-              ^
-
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
index 322ccfe..379ca57 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int3* u;
+};
 
-thread int3 u = int3(1);
-void f() {
-  half3 const v = half3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half3 const v = half3((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int3 u = int3(1);
-            ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  half3 const v = half3(u);
-              ^
-
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
index 87f86ab..377741b 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int3* u;
+};
 
-thread int3 u = int3(1);
-void f() {
-  float3 const v = float3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float3 const v = float3((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int3 u = int3(1);
-            ^
-program_source:6:16: warning: unused variable 'v' [-Wunused-variable]
-  float3 const v = float3(u);
-               ^
-
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
index b054a1c..52de391 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int3* u;
+};
 
-thread int3 u = int3(1);
-void f() {
-  uint3 const v = uint3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  uint3 const v = uint3((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int3 u = int3(1);
-            ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  uint3 const v = uint3(u);
-              ^
-
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
index f46bf61..b55b1eb 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint3* u;
+};
 
-thread uint3 u = uint3(1u);
-void f() {
-  bool3 const v = bool3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  bool3 const v = bool3((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint3 u = uint3(1u);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  bool3 const v = bool3(u);
-              ^
-
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
index 267905c..5c1195e 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint3* u;
+};
 
-thread uint3 u = uint3(1u);
-void f() {
-  half3 const v = half3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half3 const v = half3((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint3 u = uint3(1u);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  half3 const v = half3(u);
-              ^
-
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
index 3991655..bee2172 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint3* u;
+};
 
-thread uint3 u = uint3(1u);
-void f() {
-  float3 const v = float3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float3 const v = float3((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint3 u = uint3(1u);
-             ^
-program_source:6:16: warning: unused variable 'v' [-Wunused-variable]
-  float3 const v = float3(u);
-               ^
-
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
index 0d5302d..4d59555 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint3* u;
+};
 
-thread uint3 u = uint3(1u);
-void f() {
-  int3 const v = int3(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  int3 const v = int3((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint3 u = uint3(1u);
-             ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  int3 const v = int3(u);
-             ^
-
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
index f80ff7a..86a004d 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool4 m() {
-  t = true;
-  return bool4(t);
+bool4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool4((*tint_module_vars.t));
 }
-void f() {
-  half4 v = half4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half4 v = half4(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  half4 v = half4(m());
-        ^
-
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
index 2eabe06..11ad02f 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool4 m() {
-  t = true;
-  return bool4(t);
+bool4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool4((*tint_module_vars.t));
 }
-void f() {
-  float4 v = float4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float4 v = float4(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:10: warning: unused variable 'v' [-Wunused-variable]
-  float4 v = float4(m());
-         ^
-
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
index 85816d1..010e55a 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool4 m() {
-  t = true;
-  return bool4(t);
+bool4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool4((*tint_module_vars.t));
 }
-void f() {
-  int4 v = int4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  int4 v = int4(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  int4 v = int4(m());
-       ^
-
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
index 7635de9..4b940cf 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* t;
+};
 
-thread bool t = false;
-bool4 m() {
-  t = true;
-  return bool4(t);
+bool4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = true;
+  return bool4((*tint_module_vars.t));
 }
-void f() {
-  uint4 v = uint4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  uint4 v = uint4(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool t = false;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  uint4 v = uint4(m());
-        ^
-
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
index 79b149a..eff8ad7 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half4 m() {
-  t = 1.0h;
-  return half4(t);
+half4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half4((*tint_module_vars.t));
 }
-void f() {
-  bool4 v = bool4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool4 v = bool4(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  bool4 v = bool4(m());
-        ^
-
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
index 21dac4d..b766e08 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half4 m() {
-  t = 1.0h;
-  return half4(t);
+half4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half4((*tint_module_vars.t));
 }
-void f() {
-  float4 v = float4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float4 v = float4(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:10: warning: unused variable 'v' [-Wunused-variable]
-  float4 v = float4(m());
-         ^
-
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
index 8b1cd78..985dd9b 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half4 m() {
-  t = 1.0h;
-  return half4(t);
-}
-void f() {
-  int4 v = tint_v4f16_to_v4i32(m());
+half4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half4((*tint_module_vars.t));
 }
 int4 tint_v4f16_to_v4i32(half4 value) {
   return select(int4(2147483647), select(int4((-2147483647 - 1)), int4(value), (value >= half4(-65504.0h))), (value <= half4(65504.0h)));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:12: error: use of undeclared identifier 'tint_v4f16_to_v4i32'
-  int4 v = tint_v4f16_to_v4i32(m());
-           ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int4 v = tint_v4f16_to_v4i32(m(tint_module_vars));
+}
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
index 719daff..0e158be 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half* t;
+};
 
-thread half t = 0.0h;
-half4 m() {
-  t = 1.0h;
-  return half4(t);
-}
-void f() {
-  uint4 v = tint_v4f16_to_v4u32(m());
+half4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0h;
+  return half4((*tint_module_vars.t));
 }
 uint4 tint_v4f16_to_v4u32(half4 value) {
   return select(uint4(4294967295u), select(uint4(0u), uint4(value), (value >= half4(0.0h))), (value <= half4(65504.0h)));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread half t = 0.0h;
-            ^
-program_source:10:13: error: use of undeclared identifier 'tint_v4f16_to_v4u32'
-  uint4 v = tint_v4f16_to_v4u32(m());
-            ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint4 v = tint_v4f16_to_v4u32(m(tint_module_vars));
+}
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
index d13ad6f..4ef1af3 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float4 m() {
-  t = 1.0f;
-  return float4(t);
+float4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float4((*tint_module_vars.t));
 }
-void f() {
-  bool4 v = bool4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool4 v = bool4(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  bool4 v = bool4(m());
-        ^
-
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
index ede73c8..8c6c091 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float4 m() {
-  t = 1.0f;
-  return float4(t);
+float4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float4((*tint_module_vars.t));
 }
-void f() {
-  half4 v = half4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half4 v = half4(m(tint_module_vars));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  half4 v = half4(m());
-        ^
-
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
index 7b854b5..e34e857 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float4 m() {
-  t = 1.0f;
-  return float4(t);
-}
-void f() {
-  int4 v = tint_v4f32_to_v4i32(m());
+float4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float4((*tint_module_vars.t));
 }
 int4 tint_v4f32_to_v4i32(float4 value) {
   return select(int4(2147483647), select(int4((-2147483647 - 1)), int4(value), (value >= float4(-2147483648.0f))), (value <= float4(2147483520.0f)));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:12: error: use of undeclared identifier 'tint_v4f32_to_v4i32'
-  int4 v = tint_v4f32_to_v4i32(m());
-           ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int4 v = tint_v4f32_to_v4i32(m(tint_module_vars));
+}
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
index 6279399..2ef15ae 100644
--- 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
@@ -1,23 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* t;
+};
 
-thread float t = 0.0f;
-float4 m() {
-  t = 1.0f;
-  return float4(t);
-}
-void f() {
-  uint4 v = tint_v4f32_to_v4u32(m());
+float4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1.0f;
+  return float4((*tint_module_vars.t));
 }
 uint4 tint_v4f32_to_v4u32(float4 value) {
   return select(uint4(4294967295u), select(uint4(0u), uint4(value), (value >= float4(0.0f))), (value <= float4(4294967040.0f)));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float t = 0.0f;
-             ^
-program_source:10:13: error: use of undeclared identifier 'tint_v4f32_to_v4u32'
-  uint4 v = tint_v4f32_to_v4u32(m());
-            ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint4 v = tint_v4f32_to_v4u32(m(tint_module_vars));
+}
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
index ad0f1ac..b157d83 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int4 m() {
-  t = 1;
-  return int4(t);
+int4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int4((*tint_module_vars.t));
 }
-void f() {
-  bool4 v = bool4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool4 v = bool4(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  bool4 v = bool4(m());
-        ^
-
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
index 055382a..bd6879a 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int4 m() {
-  t = 1;
-  return int4(t);
+int4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int4((*tint_module_vars.t));
 }
-void f() {
-  half4 v = half4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half4 v = half4(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  half4 v = half4(m());
-        ^
-
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
index 4ea3701..fa70e40 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int4 m() {
-  t = 1;
-  return int4(t);
+int4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int4((*tint_module_vars.t));
 }
-void f() {
-  float4 v = float4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float4 v = float4(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:10: warning: unused variable 'v' [-Wunused-variable]
-  float4 v = float4(m());
-         ^
-
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
index c930eac..00cc07e 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* t;
+};
 
-thread int t = 0;
-int4 m() {
-  t = 1;
-  return int4(t);
+int4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1;
+  return int4((*tint_module_vars.t));
 }
-void f() {
-  uint4 v = uint4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  uint4 v = uint4(m(tint_module_vars));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int t = 0;
-           ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  uint4 v = uint4(m());
-        ^
-
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
index 5f41f0f..2745f5e 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint4 m() {
-  t = 1u;
-  return uint4(t);
+uint4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint4((*tint_module_vars.t));
 }
-void f() {
-  bool4 v = bool4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  bool4 v = bool4(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  bool4 v = bool4(m());
-        ^
-
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
index c553f60..a4172c3 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint4 m() {
-  t = 1u;
-  return uint4(t);
+uint4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint4((*tint_module_vars.t));
 }
-void f() {
-  half4 v = half4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  half4 v = half4(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:9: warning: unused variable 'v' [-Wunused-variable]
-  half4 v = half4(m());
-        ^
-
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
index e547733..0bd8b9e 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint4 m() {
-  t = 1u;
-  return uint4(t);
+uint4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint4((*tint_module_vars.t));
 }
-void f() {
-  float4 v = float4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  float4 v = float4(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:10: warning: unused variable 'v' [-Wunused-variable]
-  float4 v = float4(m());
-         ^
-
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
index 33b2a17..df71f26 100644
--- 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
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint* t;
+};
 
-thread uint t = 0u;
-uint4 m() {
-  t = 1u;
-  return uint4(t);
+uint4 m(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.t) = 1u;
+  return uint4((*tint_module_vars.t));
 }
-void f() {
-  int4 v = int4(m());
+void f(tint_module_vars_struct tint_module_vars) {
+  int4 v = int4(m(tint_module_vars));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint t = 0u;
-            ^
-program_source:10:8: warning: unused variable 'v' [-Wunused-variable]
-  int4 v = int4(m());
-       ^
-
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
index 80e5be0..7922117 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool4* u;
+};
 
-thread bool4 u = bool4(true);
-void f() {
-  half4 const v = half4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half4 const v = half4((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread bool4 u = bool4(true);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  half4 const v = half4(u);
-              ^
-
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
index 2835fc0f..ed5a243 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool4* u;
+};
 
-thread bool4 u = bool4(true);
-void f() {
-  float4 const v = float4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float4 const v = float4((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread bool4 u = bool4(true);
-             ^
-program_source:6:16: warning: unused variable 'v' [-Wunused-variable]
-  float4 const v = float4(u);
-               ^
-
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
index 0b2308e..e51991a 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool4* u;
+};
 
-thread bool4 u = bool4(true);
-void f() {
-  int4 const v = int4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  int4 const v = int4((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread bool4 u = bool4(true);
-             ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  int4 const v = int4(u);
-             ^
-
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
index 209ce75..fb1503c 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool4* u;
+};
 
-thread bool4 u = bool4(true);
-void f() {
-  uint4 const v = uint4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  uint4 const v = uint4((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread bool4 u = bool4(true);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  uint4 const v = uint4(u);
-              ^
-
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
index 6b7ba30..bd0f1d6 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half4* u;
+};
 
-thread half4 u = half4(1.0h);
-void f() {
-  bool4 const v = bool4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  bool4 const v = bool4((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread half4 u = half4(1.0h);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  bool4 const v = bool4(u);
-              ^
-
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
index 3a602fd..4c6efe9 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half4* u;
+};
 
-thread half4 u = half4(1.0h);
-void f() {
-  float4 const v = float4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float4 const v = float4((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread half4 u = half4(1.0h);
-             ^
-program_source:6:16: warning: unused variable 'v' [-Wunused-variable]
-  float4 const v = float4(u);
-               ^
-
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
index 06fec5e..c585bad 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half4* u;
+};
 
-thread half4 u = half4(1.0h);
-void f() {
-  int4 const v = tint_v4f16_to_v4i32(u);
-}
 int4 tint_v4f16_to_v4i32(half4 value) {
   return select(int4(2147483647), select(int4((-2147483647 - 1)), int4(value), (value >= half4(-65504.0h))), (value <= half4(65504.0h)));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread half4 u = half4(1.0h);
-             ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  int4 const v = tint_v4f16_to_v4i32(u);
-             ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int4 const v = tint_v4f16_to_v4i32((*tint_module_vars.u));
+}
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
index 4e96090..33527dd 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread half4* u;
+};
 
-thread half4 u = half4(1.0h);
-void f() {
-  uint4 const v = tint_v4f16_to_v4u32(u);
-}
 uint4 tint_v4f16_to_v4u32(half4 value) {
   return select(uint4(4294967295u), select(uint4(0u), uint4(value), (value >= half4(0.0h))), (value <= half4(65504.0h)));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread half4 u = half4(1.0h);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  uint4 const v = tint_v4f16_to_v4u32(u);
-              ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint4 const v = tint_v4f16_to_v4u32((*tint_module_vars.u));
+}
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
index cd08f418..1b76307 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float4* u;
+};
 
-thread float4 u = float4(1.0f);
-void f() {
-  bool4 const v = bool4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  bool4 const v = bool4((*tint_module_vars.u));
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float4 u = float4(1.0f);
-              ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  bool4 const v = bool4(u);
-              ^
-
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
index ff7720d..83b16c7 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float4* u;
+};
 
-thread float4 u = float4(1.0f);
-void f() {
-  half4 const v = half4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half4 const v = half4((*tint_module_vars.u));
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float4 u = float4(1.0f);
-              ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  half4 const v = half4(u);
-              ^
-
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
index 03dd661..6426fb7 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float4* u;
+};
 
-thread float4 u = float4(1.0f);
-void f() {
-  int4 const v = tint_v4f32_to_v4i32(u);
-}
 int4 tint_v4f32_to_v4i32(float4 value) {
   return select(int4(2147483647), select(int4((-2147483647 - 1)), int4(value), (value >= float4(-2147483648.0f))), (value <= float4(2147483520.0f)));
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float4 u = float4(1.0f);
-              ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  int4 const v = tint_v4f32_to_v4i32(u);
-             ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  int4 const v = tint_v4f32_to_v4i32((*tint_module_vars.u));
+}
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
index bbdd99a..127f45e 100644
--- 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
@@ -1,19 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float4* u;
+};
 
-thread float4 u = float4(1.0f);
-void f() {
-  uint4 const v = tint_v4f32_to_v4u32(u);
-}
 uint4 tint_v4f32_to_v4u32(float4 value) {
   return select(uint4(4294967295u), select(uint4(0u), uint4(value), (value >= float4(0.0f))), (value <= float4(4294967040.0f)));
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float4 u = float4(1.0f);
-              ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  uint4 const v = tint_v4f32_to_v4u32(u);
-              ^
-
+void f(tint_module_vars_struct tint_module_vars) {
+  uint4 const v = tint_v4f32_to_v4u32((*tint_module_vars.u));
+}
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
index b7ad5c7..0a5ea33 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int4* u;
+};
 
-thread int4 u = int4(1);
-void f() {
-  bool4 const v = bool4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  bool4 const v = bool4((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int4 u = int4(1);
-            ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  bool4 const v = bool4(u);
-              ^
-
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
index eab4e3c..f9a8b41 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int4* u;
+};
 
-thread int4 u = int4(1);
-void f() {
-  half4 const v = half4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half4 const v = half4((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int4 u = int4(1);
-            ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  half4 const v = half4(u);
-              ^
-
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
index 7f6383b..d755810 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int4* u;
+};
 
-thread int4 u = int4(1);
-void f() {
-  float4 const v = float4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float4 const v = float4((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int4 u = int4(1);
-            ^
-program_source:6:16: warning: unused variable 'v' [-Wunused-variable]
-  float4 const v = float4(u);
-               ^
-
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
index 8fabc17..5ccfefc 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int4* u;
+};
 
-thread int4 u = int4(1);
-void f() {
-  uint4 const v = uint4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  uint4 const v = uint4((*tint_module_vars.u));
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int4 u = int4(1);
-            ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  uint4 const v = uint4(u);
-              ^
-
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
index 64fd31c..918b4c8 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint4* u;
+};
 
-thread uint4 u = uint4(1u);
-void f() {
-  bool4 const v = bool4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  bool4 const v = bool4((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint4 u = uint4(1u);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  bool4 const v = bool4(u);
-              ^
-
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
index 740a71e..68c673e 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint4* u;
+};
 
-thread uint4 u = uint4(1u);
-void f() {
-  half4 const v = half4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  half4 const v = half4((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint4 u = uint4(1u);
-             ^
-program_source:6:15: warning: unused variable 'v' [-Wunused-variable]
-  half4 const v = half4(u);
-              ^
-
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
index 739a9f3..d7d234e 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint4* u;
+};
 
-thread uint4 u = uint4(1u);
-void f() {
-  float4 const v = float4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  float4 const v = float4((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint4 u = uint4(1u);
-             ^
-program_source:6:16: warning: unused variable 'v' [-Wunused-variable]
-  float4 const v = float4(u);
-               ^
-
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
index bec07b0..9bc6952 100644
--- 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
@@ -1,16 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread uint4* u;
+};
 
-thread uint4 u = uint4(1u);
-void f() {
-  int4 const v = int4(u);
+void f(tint_module_vars_struct tint_module_vars) {
+  int4 const v = int4((*tint_module_vars.u));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint4 u = uint4(1u);
-             ^
-program_source:6:14: warning: unused variable 'v' [-Wunused-variable]
-  int4 const v = int4(u);
-             ^
-
diff --git a/test/tint/expressions/type_ctor/array/explicit/abstract.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/explicit/abstract.wgsl.expected.ir.msl
index c81ca4f..a706e87 100644
--- a/test/tint/expressions/type_ctor/array/explicit/abstract.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/explicit/abstract.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<float, 2>* arr;
+};
 
-thread tint_array<float, 2> arr = tint_array<float, 2>{1.0f, 2.0f};
-void f() {
-  tint_array<float, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<float, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:29: error: program scope variable must reside in constant address space
-thread tint_array<float, 2> arr = tint_array<float, 2>{1.0f, 2.0f};
-                            ^
-program_source:18:24: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<float, 2> v = arr;
-                       ^
-
diff --git a/test/tint/expressions/type_ctor/array/explicit/array/abstract.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/explicit/array/abstract.wgsl.expected.ir.msl
index b447ff1..db752e0 100644
--- a/test/tint/expressions/type_ctor/array/explicit/array/abstract.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/explicit/array/abstract.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<tint_array<float, 2>, 2>* arr;
+};
 
-thread tint_array<tint_array<float, 2>, 2> arr = tint_array<tint_array<float, 2>, 2>{tint_array<float, 2>{1.0f, 2.0f}, tint_array<float, 2>{3.0f, 4.0f}};
-void f() {
-  tint_array<tint_array<float, 2>, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<tint_array<float, 2>, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:44: error: program scope variable must reside in constant address space
-thread tint_array<tint_array<float, 2>, 2> arr = tint_array<tint_array<float, 2>, 2>{tint_array<float, 2>{1.0f, 2.0f}, tint_array<float, 2>{3.0f, 4.0f}};
-                                           ^
-program_source:18:39: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<tint_array<float, 2>, 2> v = arr;
-                                      ^
-
diff --git a/test/tint/expressions/type_ctor/array/explicit/array/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/explicit/array/f32.wgsl.expected.ir.msl
index b447ff1..db752e0 100644
--- a/test/tint/expressions/type_ctor/array/explicit/array/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/explicit/array/f32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<tint_array<float, 2>, 2>* arr;
+};
 
-thread tint_array<tint_array<float, 2>, 2> arr = tint_array<tint_array<float, 2>, 2>{tint_array<float, 2>{1.0f, 2.0f}, tint_array<float, 2>{3.0f, 4.0f}};
-void f() {
-  tint_array<tint_array<float, 2>, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<tint_array<float, 2>, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:44: error: program scope variable must reside in constant address space
-thread tint_array<tint_array<float, 2>, 2> arr = tint_array<tint_array<float, 2>, 2>{tint_array<float, 2>{1.0f, 2.0f}, tint_array<float, 2>{3.0f, 4.0f}};
-                                           ^
-program_source:18:39: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<tint_array<float, 2>, 2> v = arr;
-                                      ^
-
diff --git a/test/tint/expressions/type_ctor/array/explicit/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/explicit/f32.wgsl.expected.ir.msl
index c81ca4f..a706e87 100644
--- a/test/tint/expressions/type_ctor/array/explicit/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/explicit/f32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<float, 2>* arr;
+};
 
-thread tint_array<float, 2> arr = tint_array<float, 2>{1.0f, 2.0f};
-void f() {
-  tint_array<float, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<float, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:29: error: program scope variable must reside in constant address space
-thread tint_array<float, 2> arr = tint_array<float, 2>{1.0f, 2.0f};
-                            ^
-program_source:18:24: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<float, 2> v = arr;
-                       ^
-
diff --git a/test/tint/expressions/type_ctor/array/explicit/i32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/explicit/i32.wgsl.expected.ir.msl
index 74ea049..0aacac8 100644
--- a/test/tint/expressions/type_ctor/array/explicit/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/explicit/i32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<int, 2>* arr;
+};
 
-thread tint_array<int, 2> arr = tint_array<int, 2>{1, 2};
-void f() {
-  tint_array<int, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<int, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 2> arr = tint_array<int, 2>{1, 2};
-                          ^
-program_source:18:22: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<int, 2> v = arr;
-                     ^
-
diff --git a/test/tint/expressions/type_ctor/array/explicit/mat2x2/abstract.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/explicit/mat2x2/abstract.wgsl.expected.ir.msl
index 2e3b058..bf71d0d 100644
--- a/test/tint/expressions/type_ctor/array/explicit/mat2x2/abstract.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/explicit/mat2x2/abstract.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,12 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<float2x2, 2>* arr;
+};
 
-thread tint_array<float2x2, 2> arr = tint_array<float2x2, 2>{float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f)), float2x2(float2(5.0f, 6.0f), float2(7.0f, 8.0f))};
-void f() {
-  tint_array<float2x2, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<float2x2, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:32: error: program scope variable must reside in constant address space
-thread tint_array<float2x2, 2> arr = tint_array<float2x2, 2>{float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f)), float2x2(float2(5.0f, 6.0f), float2(7.0f, 8.0f))};
-                               ^
-
diff --git a/test/tint/expressions/type_ctor/array/explicit/mat2x2/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/explicit/mat2x2/f32.wgsl.expected.ir.msl
index 2e3b058..bf71d0d 100644
--- a/test/tint/expressions/type_ctor/array/explicit/mat2x2/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/explicit/mat2x2/f32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,12 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<float2x2, 2>* arr;
+};
 
-thread tint_array<float2x2, 2> arr = tint_array<float2x2, 2>{float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f)), float2x2(float2(5.0f, 6.0f), float2(7.0f, 8.0f))};
-void f() {
-  tint_array<float2x2, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<float2x2, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:32: error: program scope variable must reside in constant address space
-thread tint_array<float2x2, 2> arr = tint_array<float2x2, 2>{float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f)), float2x2(float2(5.0f, 6.0f), float2(7.0f, 8.0f))};
-                               ^
-
diff --git a/test/tint/expressions/type_ctor/array/explicit/u32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/explicit/u32.wgsl.expected.ir.msl
index 16cfda7..aa732c1 100644
--- a/test/tint/expressions/type_ctor/array/explicit/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/explicit/u32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<uint, 2>* arr;
+};
 
-thread tint_array<uint, 2> arr = tint_array<uint, 2>{1u, 2u};
-void f() {
-  tint_array<uint, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<uint, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:28: error: program scope variable must reside in constant address space
-thread tint_array<uint, 2> arr = tint_array<uint, 2>{1u, 2u};
-                           ^
-program_source:18:23: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<uint, 2> v = arr;
-                      ^
-
diff --git a/test/tint/expressions/type_ctor/array/explicit/vec2/abstract.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/explicit/vec2/abstract.wgsl.expected.ir.msl
index c97df58..33c0a20 100644
--- a/test/tint/expressions/type_ctor/array/explicit/vec2/abstract.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/explicit/vec2/abstract.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<float2, 2>* arr;
+};
 
-thread tint_array<float2, 2> arr = tint_array<float2, 2>{float2(1.0f), float2(2.0f)};
-void f() {
-  tint_array<float2, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<float2, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:30: error: program scope variable must reside in constant address space
-thread tint_array<float2, 2> arr = tint_array<float2, 2>{float2(1.0f), float2(2.0f)};
-                             ^
-program_source:18:25: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<float2, 2> v = arr;
-                        ^
-
diff --git a/test/tint/expressions/type_ctor/array/explicit/vec2/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/explicit/vec2/f32.wgsl.expected.ir.msl
index c97df58..33c0a20 100644
--- a/test/tint/expressions/type_ctor/array/explicit/vec2/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/explicit/vec2/f32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<float2, 2>* arr;
+};
 
-thread tint_array<float2, 2> arr = tint_array<float2, 2>{float2(1.0f), float2(2.0f)};
-void f() {
-  tint_array<float2, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<float2, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:30: error: program scope variable must reside in constant address space
-thread tint_array<float2, 2> arr = tint_array<float2, 2>{float2(1.0f), float2(2.0f)};
-                             ^
-program_source:18:25: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<float2, 2> v = arr;
-                        ^
-
diff --git a/test/tint/expressions/type_ctor/array/explicit/vec2/i32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/explicit/vec2/i32.wgsl.expected.ir.msl
index a679881..149d65d 100644
--- a/test/tint/expressions/type_ctor/array/explicit/vec2/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/explicit/vec2/i32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<int2, 2>* arr;
+};
 
-thread tint_array<int2, 2> arr = tint_array<int2, 2>{int2(1), int2(2)};
-void f() {
-  tint_array<int2, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<int2, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:28: error: program scope variable must reside in constant address space
-thread tint_array<int2, 2> arr = tint_array<int2, 2>{int2(1), int2(2)};
-                           ^
-program_source:18:23: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<int2, 2> v = arr;
-                      ^
-
diff --git a/test/tint/expressions/type_ctor/array/explicit/vec2/u32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/explicit/vec2/u32.wgsl.expected.ir.msl
index fc73b45..c5de1b0 100644
--- a/test/tint/expressions/type_ctor/array/explicit/vec2/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/explicit/vec2/u32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<uint2, 2>* arr;
+};
 
-thread tint_array<uint2, 2> arr = tint_array<uint2, 2>{uint2(1u), uint2(2u)};
-void f() {
-  tint_array<uint2, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<uint2, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:29: error: program scope variable must reside in constant address space
-thread tint_array<uint2, 2> arr = tint_array<uint2, 2>{uint2(1u), uint2(2u)};
-                            ^
-program_source:18:24: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<uint2, 2> v = arr;
-                       ^
-
diff --git a/test/tint/expressions/type_ctor/array/inferred/abstract.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/inferred/abstract.wgsl.expected.ir.msl
index 74ea049..0aacac8 100644
--- a/test/tint/expressions/type_ctor/array/inferred/abstract.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/inferred/abstract.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<int, 2>* arr;
+};
 
-thread tint_array<int, 2> arr = tint_array<int, 2>{1, 2};
-void f() {
-  tint_array<int, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<int, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 2> arr = tint_array<int, 2>{1, 2};
-                          ^
-program_source:18:22: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<int, 2> v = arr;
-                     ^
-
diff --git a/test/tint/expressions/type_ctor/array/inferred/array/abstract.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/inferred/array/abstract.wgsl.expected.ir.msl
index 1fac236..cd553cb 100644
--- a/test/tint/expressions/type_ctor/array/inferred/array/abstract.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/inferred/array/abstract.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<tint_array<int, 2>, 2>* arr;
+};
 
-thread tint_array<tint_array<int, 2>, 2> arr = tint_array<tint_array<int, 2>, 2>{tint_array<int, 2>{1, 2}, tint_array<int, 2>{3, 4}};
-void f() {
-  tint_array<tint_array<int, 2>, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<tint_array<int, 2>, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:42: error: program scope variable must reside in constant address space
-thread tint_array<tint_array<int, 2>, 2> arr = tint_array<tint_array<int, 2>, 2>{tint_array<int, 2>{1, 2}, tint_array<int, 2>{3, 4}};
-                                         ^
-program_source:18:37: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<tint_array<int, 2>, 2> v = arr;
-                                    ^
-
diff --git a/test/tint/expressions/type_ctor/array/inferred/array/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/inferred/array/f32.wgsl.expected.ir.msl
index b447ff1..db752e0 100644
--- a/test/tint/expressions/type_ctor/array/inferred/array/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/inferred/array/f32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<tint_array<float, 2>, 2>* arr;
+};
 
-thread tint_array<tint_array<float, 2>, 2> arr = tint_array<tint_array<float, 2>, 2>{tint_array<float, 2>{1.0f, 2.0f}, tint_array<float, 2>{3.0f, 4.0f}};
-void f() {
-  tint_array<tint_array<float, 2>, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<tint_array<float, 2>, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:44: error: program scope variable must reside in constant address space
-thread tint_array<tint_array<float, 2>, 2> arr = tint_array<tint_array<float, 2>, 2>{tint_array<float, 2>{1.0f, 2.0f}, tint_array<float, 2>{3.0f, 4.0f}};
-                                           ^
-program_source:18:39: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<tint_array<float, 2>, 2> v = arr;
-                                      ^
-
diff --git a/test/tint/expressions/type_ctor/array/inferred/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/inferred/f32.wgsl.expected.ir.msl
index c81ca4f..a706e87 100644
--- a/test/tint/expressions/type_ctor/array/inferred/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/inferred/f32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<float, 2>* arr;
+};
 
-thread tint_array<float, 2> arr = tint_array<float, 2>{1.0f, 2.0f};
-void f() {
-  tint_array<float, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<float, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:29: error: program scope variable must reside in constant address space
-thread tint_array<float, 2> arr = tint_array<float, 2>{1.0f, 2.0f};
-                            ^
-program_source:18:24: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<float, 2> v = arr;
-                       ^
-
diff --git a/test/tint/expressions/type_ctor/array/inferred/i32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/inferred/i32.wgsl.expected.ir.msl
index 74ea049..0aacac8 100644
--- a/test/tint/expressions/type_ctor/array/inferred/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/inferred/i32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<int, 2>* arr;
+};
 
-thread tint_array<int, 2> arr = tint_array<int, 2>{1, 2};
-void f() {
-  tint_array<int, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<int, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 2> arr = tint_array<int, 2>{1, 2};
-                          ^
-program_source:18:22: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<int, 2> v = arr;
-                     ^
-
diff --git a/test/tint/expressions/type_ctor/array/inferred/mat2x2/abstract.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/inferred/mat2x2/abstract.wgsl.expected.ir.msl
index 2e3b058..bf71d0d 100644
--- a/test/tint/expressions/type_ctor/array/inferred/mat2x2/abstract.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/inferred/mat2x2/abstract.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,12 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<float2x2, 2>* arr;
+};
 
-thread tint_array<float2x2, 2> arr = tint_array<float2x2, 2>{float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f)), float2x2(float2(5.0f, 6.0f), float2(7.0f, 8.0f))};
-void f() {
-  tint_array<float2x2, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<float2x2, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:32: error: program scope variable must reside in constant address space
-thread tint_array<float2x2, 2> arr = tint_array<float2x2, 2>{float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f)), float2x2(float2(5.0f, 6.0f), float2(7.0f, 8.0f))};
-                               ^
-
diff --git a/test/tint/expressions/type_ctor/array/inferred/mat2x2/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/inferred/mat2x2/f32.wgsl.expected.ir.msl
index 2e3b058..bf71d0d 100644
--- a/test/tint/expressions/type_ctor/array/inferred/mat2x2/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/inferred/mat2x2/f32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,12 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<float2x2, 2>* arr;
+};
 
-thread tint_array<float2x2, 2> arr = tint_array<float2x2, 2>{float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f)), float2x2(float2(5.0f, 6.0f), float2(7.0f, 8.0f))};
-void f() {
-  tint_array<float2x2, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<float2x2, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:32: error: program scope variable must reside in constant address space
-thread tint_array<float2x2, 2> arr = tint_array<float2x2, 2>{float2x2(float2(1.0f, 2.0f), float2(3.0f, 4.0f)), float2x2(float2(5.0f, 6.0f), float2(7.0f, 8.0f))};
-                               ^
-
diff --git a/test/tint/expressions/type_ctor/array/inferred/u32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/inferred/u32.wgsl.expected.ir.msl
index 16cfda7..aa732c1 100644
--- a/test/tint/expressions/type_ctor/array/inferred/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/inferred/u32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<uint, 2>* arr;
+};
 
-thread tint_array<uint, 2> arr = tint_array<uint, 2>{1u, 2u};
-void f() {
-  tint_array<uint, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<uint, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:28: error: program scope variable must reside in constant address space
-thread tint_array<uint, 2> arr = tint_array<uint, 2>{1u, 2u};
-                           ^
-program_source:18:23: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<uint, 2> v = arr;
-                      ^
-
diff --git a/test/tint/expressions/type_ctor/array/inferred/vec2/abstract.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/inferred/vec2/abstract.wgsl.expected.ir.msl
index c97df58..33c0a20 100644
--- a/test/tint/expressions/type_ctor/array/inferred/vec2/abstract.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/inferred/vec2/abstract.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<float2, 2>* arr;
+};
 
-thread tint_array<float2, 2> arr = tint_array<float2, 2>{float2(1.0f), float2(2.0f)};
-void f() {
-  tint_array<float2, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<float2, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:30: error: program scope variable must reside in constant address space
-thread tint_array<float2, 2> arr = tint_array<float2, 2>{float2(1.0f), float2(2.0f)};
-                             ^
-program_source:18:25: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<float2, 2> v = arr;
-                        ^
-
diff --git a/test/tint/expressions/type_ctor/array/inferred/vec2/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/inferred/vec2/f32.wgsl.expected.ir.msl
index c97df58..33c0a20 100644
--- a/test/tint/expressions/type_ctor/array/inferred/vec2/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/inferred/vec2/f32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<float2, 2>* arr;
+};
 
-thread tint_array<float2, 2> arr = tint_array<float2, 2>{float2(1.0f), float2(2.0f)};
-void f() {
-  tint_array<float2, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<float2, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:30: error: program scope variable must reside in constant address space
-thread tint_array<float2, 2> arr = tint_array<float2, 2>{float2(1.0f), float2(2.0f)};
-                             ^
-program_source:18:25: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<float2, 2> v = arr;
-                        ^
-
diff --git a/test/tint/expressions/type_ctor/array/inferred/vec2/i32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/inferred/vec2/i32.wgsl.expected.ir.msl
index a679881..149d65d 100644
--- a/test/tint/expressions/type_ctor/array/inferred/vec2/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/inferred/vec2/i32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<int2, 2>* arr;
+};
 
-thread tint_array<int2, 2> arr = tint_array<int2, 2>{int2(1), int2(2)};
-void f() {
-  tint_array<int2, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<int2, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:28: error: program scope variable must reside in constant address space
-thread tint_array<int2, 2> arr = tint_array<int2, 2>{int2(1), int2(2)};
-                           ^
-program_source:18:23: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<int2, 2> v = arr;
-                      ^
-
diff --git a/test/tint/expressions/type_ctor/array/inferred/vec2/u32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/array/inferred/vec2/u32.wgsl.expected.ir.msl
index fc73b45..c5de1b0 100644
--- a/test/tint/expressions/type_ctor/array/inferred/vec2/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/type_ctor/array/inferred/vec2/u32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,15 +12,10 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<uint2, 2>* arr;
+};
 
-thread tint_array<uint2, 2> arr = tint_array<uint2, 2>{uint2(1u), uint2(2u)};
-void f() {
-  tint_array<uint2, 2> v = arr;
+void f(tint_module_vars_struct tint_module_vars) {
+  tint_array<uint2, 2> v = (*tint_module_vars.arr);
 }
-program_source:16:29: error: program scope variable must reside in constant address space
-thread tint_array<uint2, 2> arr = tint_array<uint2, 2>{uint2(1u), uint2(2u)};
-                            ^
-program_source:18:24: warning: unused variable 'v' [-Wunused-variable]
-  tint_array<uint2, 2> v = arr;
-                       ^
-
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
index 281487e..4c68798 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x2* m;
+  device half2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x2* out [[buffer(0)]]) {
+  thread half2x2 m = half2x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = half2x2((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 4dda801..5f14672 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x2* m;
+  device float2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x2* out [[buffer(0)]]) {
+  thread float2x2 m = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = float2x2((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 42b86c1..8a832b8 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x2* m;
+  device half2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x2* out [[buffer(0)]]) {
+  thread half2x2 m = half2x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 3f4a245..5aa1a1e 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x2* m;
+  device float2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x2* out [[buffer(0)]]) {
+  thread float2x2 m = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 42b86c1..8a832b8 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x2* m;
+  device half2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x2* out [[buffer(0)]]) {
+  thread half2x2 m = half2x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 3f4a245..5aa1a1e 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x2* m;
+  device float2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x2* out [[buffer(0)]]) {
+  thread float2x2 m = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 281487e..4c68798 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x2* m;
+  device half2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x2* out [[buffer(0)]]) {
+  thread half2x2 m = half2x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = half2x2((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 4dda801..5f14672 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x2* m;
+  device float2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x2* out [[buffer(0)]]) {
+  thread float2x2 m = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = float2x2((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index d7f3dcc..1dc41c0 100644
--- 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
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float2x2* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  (*tint_module_vars.out) = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    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
index 42b86c1..8a832b8 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x2* m;
+  device half2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x2* out [[buffer(0)]]) {
+  thread half2x2 m = half2x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 3f4a245..5aa1a1e 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x2* m;
+  device float2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x2* out [[buffer(0)]]) {
+  thread float2x2 m = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index d7f3dcc..1dc41c0 100644
--- 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
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float2x2* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  (*tint_module_vars.out) = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    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
index 42b86c1..8a832b8 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x2* m;
+  device half2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x2* out [[buffer(0)]]) {
+  thread half2x2 m = half2x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 3f4a245..5aa1a1e 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x2* m;
+  device float2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x2* out [[buffer(0)]]) {
+  thread float2x2 m = float2x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 9363978..cae3bd0 100644
--- 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
@@ -1,23 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device half2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat2x2<f16>, read_write> = var @binding_point(0, 0)
+kernel void f(device half2x2* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  half2x2 m = half2x2(half2(0.0h), half2(0.0h));
+  (*tint_module_vars.out) = half2x2(m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index c0e5971..b066f0b 100644
--- 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
@@ -1,23 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float2x2* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  float2x2 m = float2x2(float2(0.0f), float2(0.0f));
+  (*tint_module_vars.out) = float2x2(m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 4099885..7a0a8ca 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x2* m;
+  device half2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x2* out [[buffer(0)]]) {
+  thread half2x2 m = half2x2(half2(0.0h), half2(0.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 0680fbe..40054f8 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x2* m;
+  device float2x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x2* out [[buffer(0)]]) {
+  thread float2x2 m = float2x2(float2(0.0f), float2(0.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 2619ee2..37114d6 100644
--- 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
@@ -1,34 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x3* m;
+  device half2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half2x3* const target, half2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f16> = load %m
-    %5:mat2x3<f16> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device half2x3* out [[buffer(0)]]) {
+  thread half2x3 m = half2x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, half2x3((*tint_module_vars.m)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f16>, read_write>, %value_param:mat2x3<f16>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %11:vec3<f16> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %13:vec3<f16> = access %value_param, 1u
-    store %12, %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/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
index 3bdeb77..3a8248f 100644
--- 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
@@ -1,34 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x3* m;
+  device float2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f32> = load %m
-    %5:mat2x3<f32> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device float2x3* out [[buffer(0)]]) {
+  thread float2x3 m = float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, float2x3((*tint_module_vars.m)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %11:vec3<f32> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %13:vec3<f32> = access %value_param, 1u
-    store %12, %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/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
index 8bd65fe..b741177 100644
--- 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
@@ -1,33 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x3* m;
+  device half2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half2x3* const target, half2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half2x3* out [[buffer(0)]]) {
+  thread half2x3 m = half2x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f16>, read_write>, %value_param:mat2x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    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/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
index 6de92fb..c9a5358 100644
--- 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
@@ -1,33 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x3* m;
+  device float2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float2x3* out [[buffer(0)]]) {
+  thread float2x3 m = float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    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/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
index 8bd65fe..b741177 100644
--- 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
@@ -1,33 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x3* m;
+  device half2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half2x3* const target, half2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half2x3* out [[buffer(0)]]) {
+  thread half2x3 m = half2x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f16>, read_write>, %value_param:mat2x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    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/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
index 6de92fb..c9a5358 100644
--- 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
@@ -1,33 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x3* m;
+  device float2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float2x3* out [[buffer(0)]]) {
+  thread float2x3 m = float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    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/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
index 2619ee2..37114d6 100644
--- 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
@@ -1,34 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x3* m;
+  device half2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half2x3* const target, half2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f16> = load %m
-    %5:mat2x3<f16> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device half2x3* out [[buffer(0)]]) {
+  thread half2x3 m = half2x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, half2x3((*tint_module_vars.m)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f16>, read_write>, %value_param:mat2x3<f16>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %11:vec3<f16> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %13:vec3<f16> = access %value_param, 1u
-    store %12, %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/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
index 3bdeb77..3a8248f 100644
--- 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
@@ -1,34 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x3* m;
+  device float2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f32> = load %m
-    %5:mat2x3<f32> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device float2x3* out [[buffer(0)]]) {
+  thread float2x3 m = float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, float2x3((*tint_module_vars.m)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %11:vec3<f32> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %13:vec3<f32> = access %value_param, 1u
-    store %12, %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/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
index ae5af58..b104cd1 100644
--- 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
@@ -1,31 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 0)
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %3:void = call %tint_store_and_preserve_padding, %out, mat2x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f))
-    ret
-  }
+kernel void f(device float2x3* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
-  $B3: {
-    %7:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %8:vec3<f32> = access %value_param, 0u
-    store %7, %8
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %10:vec3<f32> = access %value_param, 1u
-    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/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
index 8bd65fe..b741177 100644
--- 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
@@ -1,33 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x3* m;
+  device half2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half2x3* const target, half2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half2x3* out [[buffer(0)]]) {
+  thread half2x3 m = half2x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f16>, read_write>, %value_param:mat2x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    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/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
index 6de92fb..c9a5358 100644
--- 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
@@ -1,33 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x3* m;
+  device float2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float2x3* out [[buffer(0)]]) {
+  thread float2x3 m = float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    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/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
index ae5af58..b104cd1 100644
--- 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
@@ -1,31 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 0)
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %3:void = call %tint_store_and_preserve_padding, %out, mat2x3<f32>(vec3<f32>(0.0f, 1.0f, 2.0f), vec3<f32>(3.0f, 4.0f, 5.0f))
-    ret
-  }
+kernel void f(device float2x3* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
-  $B3: {
-    %7:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %8:vec3<f32> = access %value_param, 0u
-    store %7, %8
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %10:vec3<f32> = access %value_param, 1u
-    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/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
index 8bd65fe..b741177 100644
--- 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
@@ -1,33 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x3* m;
+  device half2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half2x3* const target, half2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half2x3* out [[buffer(0)]]) {
+  thread half2x3 m = half2x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f16>, read_write>, %value_param:mat2x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    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/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
index 6de92fb..c9a5358 100644
--- 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
@@ -1,33 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x3* m;
+  device float2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float2x3* out [[buffer(0)]]) {
+  thread float2x3 m = float2x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    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/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/load/f16.wgsl.expected.ir.msl
index cfbb960..7f26f49 100644
--- 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
@@ -1,34 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device half2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat2x3<f16>, read_write> = var @binding_point(0, 0)
+void tint_store_and_preserve_padding(device half2x3* const target, half2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %m:ptr<function, mat2x3<f16>, read_write> = var, mat2x3<f16>(vec3<f16>(0.0h))
-    %4:mat2x3<f16> = load %m
-    %5:mat2x3<f16> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device half2x3* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  half2x3 m = half2x3(half3(0.0h), half3(0.0h));
+  tint_store_and_preserve_padding(tint_module_vars.out, half2x3(m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f16>, read_write>, %value_param:mat2x3<f16>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %11:vec3<f16> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %13:vec3<f16> = access %value_param, 1u
-    store %12, %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/expressions/type_ctor/mat2x3/load/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/load/f32.wgsl.expected.ir.msl
index 32137a0..15b2b5e 100644
--- 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
@@ -1,34 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat2x3<f32>, read_write> = var @binding_point(0, 0)
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %m:ptr<function, mat2x3<f32>, read_write> = var, mat2x3<f32>(vec3<f32>(0.0f))
-    %4:mat2x3<f32> = load %m
-    %5:mat2x3<f32> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device float2x3* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  float2x3 m = float2x3(float3(0.0f), float3(0.0f));
+  tint_store_and_preserve_padding(tint_module_vars.out, float2x3(m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %11:vec3<f32> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %13:vec3<f32> = access %value_param, 1u
-    store %12, %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/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/zero/f16.wgsl.expected.ir.msl
index f77c475..39b1128 100644
--- 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
@@ -1,33 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x3* m;
+  device half2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half2x3* const target, half2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half2x3* out [[buffer(0)]]) {
+  thread half2x3 m = half2x3(half3(0.0h), half3(0.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f16>, read_write>, %value_param:mat2x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    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/expressions/type_ctor/mat2x3/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat2x3/zero/f32.wgsl.expected.ir.msl
index 70ad078..a3c5077 100644
--- 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
@@ -1,33 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x3* m;
+  device float2x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float2x3* const target, float2x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat2x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float2x3* out [[buffer(0)]]) {
+  thread float2x3 m = float2x3(float3(0.0f), float3(0.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat2x3<f32>, read_write>, %value_param:mat2x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    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/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
index 1597cd9..3286eb6 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x4* m;
+  device half2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x4* out [[buffer(0)]]) {
+  thread half2x4 m = half2x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = half2x4((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 602e3f6..dd86111 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x4* m;
+  device float2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x4* out [[buffer(0)]]) {
+  thread float2x4 m = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = float2x4((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 483754b..004898d 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x4* m;
+  device half2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x4* out [[buffer(0)]]) {
+  thread half2x4 m = half2x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index a902608..c698196 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x4* m;
+  device float2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x4* out [[buffer(0)]]) {
+  thread float2x4 m = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 483754b..004898d 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x4* m;
+  device half2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x4* out [[buffer(0)]]) {
+  thread half2x4 m = half2x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index a902608..c698196 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x4* m;
+  device float2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x4* out [[buffer(0)]]) {
+  thread float2x4 m = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 1597cd9..3286eb6 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x4* m;
+  device half2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x4* out [[buffer(0)]]) {
+  thread half2x4 m = half2x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = half2x4((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 602e3f6..dd86111 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x4* m;
+  device float2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x4* out [[buffer(0)]]) {
+  thread float2x4 m = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = float2x4((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index fae26aa..3026fbe3 100644
--- 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
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float2x4* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  (*tint_module_vars.out) = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    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
index 483754b..004898d 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x4* m;
+  device half2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x4* out [[buffer(0)]]) {
+  thread half2x4 m = half2x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index a902608..c698196 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x4* m;
+  device float2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x4* out [[buffer(0)]]) {
+  thread float2x4 m = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index fae26aa..3026fbe3 100644
--- 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
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float2x4* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  (*tint_module_vars.out) = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    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
index 483754b..004898d 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x4* m;
+  device half2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x4* out [[buffer(0)]]) {
+  thread half2x4 m = half2x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index a902608..c698196 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x4* m;
+  device float2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x4* out [[buffer(0)]]) {
+  thread float2x4 m = float2x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 515c6cf..5fe385a 100644
--- 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
@@ -1,23 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device half2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat2x4<f16>, read_write> = var @binding_point(0, 0)
+kernel void f(device half2x4* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  half2x4 m = half2x4(half4(0.0h), half4(0.0h));
+  (*tint_module_vars.out) = half2x4(m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 83c77f5..0e08d0b 100644
--- 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
@@ -1,23 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float2x4* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  float2x4 m = float2x4(float4(0.0f), float4(0.0f));
+  (*tint_module_vars.out) = float2x4(m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 18cc1f7..fdcdee2 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half2x4* m;
+  device half2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half2x4* out [[buffer(0)]]) {
+  thread half2x4 m = half2x4(half4(0.0h), half4(0.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 7225b73..265d79c 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x4* m;
+  device float2x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float2x4* out [[buffer(0)]]) {
+  thread float2x4 m = float2x4(float4(0.0f), float4(0.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 68d8372b..67fb019 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x2* m;
+  device half3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x2* out [[buffer(0)]]) {
+  thread half3x2 m = half3x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = half3x2((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index e0de70d..4faea37 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x2* m;
+  device float3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x2* out [[buffer(0)]]) {
+  thread float3x2 m = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = float3x2((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index a0d7871..521eca77 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x2* m;
+  device half3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x2* out [[buffer(0)]]) {
+  thread half3x2 m = half3x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 53e8af3..f8511bb 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x2* m;
+  device float3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x2* out [[buffer(0)]]) {
+  thread float3x2 m = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index a0d7871..521eca77 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x2* m;
+  device half3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x2* out [[buffer(0)]]) {
+  thread half3x2 m = half3x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 53e8af3..f8511bb 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x2* m;
+  device float3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x2* out [[buffer(0)]]) {
+  thread float3x2 m = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 68d8372b..67fb019 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x2* m;
+  device half3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x2* out [[buffer(0)]]) {
+  thread half3x2 m = half3x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = half3x2((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index e0de70d..4faea37 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x2* m;
+  device float3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x2* out [[buffer(0)]]) {
+  thread float3x2 m = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = float3x2((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 35f38c8..d3aa798 100644
--- 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
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float3x2* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  (*tint_module_vars.out) = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    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
index a0d7871..521eca77 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x2* m;
+  device half3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x2* out [[buffer(0)]]) {
+  thread half3x2 m = half3x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 53e8af3..f8511bb 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x2* m;
+  device float3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x2* out [[buffer(0)]]) {
+  thread float3x2 m = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 35f38c8..d3aa798 100644
--- 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
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float3x2* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  (*tint_module_vars.out) = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    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
index a0d7871..521eca77 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x2* m;
+  device half3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x2* out [[buffer(0)]]) {
+  thread half3x2 m = half3x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 53e8af3..f8511bb 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x2* m;
+  device float3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x2* out [[buffer(0)]]) {
+  thread float3x2 m = float3x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 9c00151..79eea62 100644
--- 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
@@ -1,23 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device half3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat3x2<f16>, read_write> = var @binding_point(0, 0)
+kernel void f(device half3x2* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  half3x2 m = half3x2(half2(0.0h), half2(0.0h), half2(0.0h));
+  (*tint_module_vars.out) = half3x2(m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 82b31bb..e683848 100644
--- 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
@@ -1,23 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat3x2<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float3x2* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  float3x2 m = float3x2(float2(0.0f), float2(0.0f), float2(0.0f));
+  (*tint_module_vars.out) = float3x2(m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index de3e5f4..1474c28 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x2* m;
+  device half3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x2* out [[buffer(0)]]) {
+  thread half3x2 m = half3x2(half2(0.0h), half2(0.0h), half2(0.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 81a9b6d..44c518f 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x2* m;
+  device float3x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x2* out [[buffer(0)]]) {
+  thread float3x2 m = float3x2(float2(0.0f), float2(0.0f), float2(0.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 713b725..7a81f8b 100644
--- 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
@@ -1,37 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x3* m;
+  device half3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half3x3* const target, half3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f16> = load %m
-    %5:mat3x3<f16> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device half3x3* out [[buffer(0)]]) {
+  thread half3x3 m = half3x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, half3x3((*tint_module_vars.m)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f16>, read_write>, %value_param:mat3x3<f16>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %11:vec3<f16> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %13:vec3<f16> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %15:vec3<f16> = access %value_param, 2u
-    store %14, %15
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
index b261ad3..d47de76 100644
--- 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
@@ -1,37 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x3* m;
+  device float3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f32> = load %m
-    %5:mat3x3<f32> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device float3x3* out [[buffer(0)]]) {
+  thread float3x3 m = float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, float3x3((*tint_module_vars.m)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f32>, read_write>, %value_param:mat3x3<f32>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %11:vec3<f32> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %13:vec3<f32> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %15:vec3<f32> = access %value_param, 2u
-    store %14, %15
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
index d193a29..d54d574 100644
--- 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
@@ -1,36 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x3* m;
+  device half3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half3x3* const target, half3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half3x3* out [[buffer(0)]]) {
+  thread half3x3 m = half3x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f16>, read_write>, %value_param:mat3x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %14:vec3<f16> = access %value_param, 2u
-    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/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
index 671fd01..63fddf5 100644
--- 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
@@ -1,36 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x3* m;
+  device float3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float3x3* out [[buffer(0)]]) {
+  thread float3x3 m = float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f32>, read_write>, %value_param:mat3x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %14:vec3<f32> = access %value_param, 2u
-    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/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
index d193a29..d54d574 100644
--- 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
@@ -1,36 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x3* m;
+  device half3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half3x3* const target, half3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half3x3* out [[buffer(0)]]) {
+  thread half3x3 m = half3x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f16>, read_write>, %value_param:mat3x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %14:vec3<f16> = access %value_param, 2u
-    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/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
index 671fd01..63fddf5 100644
--- 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
@@ -1,36 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x3* m;
+  device float3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float3x3* out [[buffer(0)]]) {
+  thread float3x3 m = float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f32>, read_write>, %value_param:mat3x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %14:vec3<f32> = access %value_param, 2u
-    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/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
index 713b725..7a81f8b 100644
--- 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
@@ -1,37 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x3* m;
+  device half3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half3x3* const target, half3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f16> = load %m
-    %5:mat3x3<f16> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device half3x3* out [[buffer(0)]]) {
+  thread half3x3 m = half3x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, half3x3((*tint_module_vars.m)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f16>, read_write>, %value_param:mat3x3<f16>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %11:vec3<f16> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %13:vec3<f16> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %15:vec3<f16> = access %value_param, 2u
-    store %14, %15
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
index b261ad3..d47de76 100644
--- 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
@@ -1,37 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x3* m;
+  device float3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f32> = load %m
-    %5:mat3x3<f32> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device float3x3* out [[buffer(0)]]) {
+  thread float3x3 m = float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, float3x3((*tint_module_vars.m)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f32>, read_write>, %value_param:mat3x3<f32>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %11:vec3<f32> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %13:vec3<f32> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %15:vec3<f32> = access %value_param, 2u
-    store %14, %15
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
index d51d719..251e0b2 100644
--- 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
@@ -1,34 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %3:void = call %tint_store_and_preserve_padding, %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
-  }
+kernel void f(device float3x3* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f32>, read_write>, %value_param:mat3x3<f32>):void {
-  $B3: {
-    %7:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %8:vec3<f32> = access %value_param, 0u
-    store %7, %8
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %10:vec3<f32> = access %value_param, 1u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %12:vec3<f32> = access %value_param, 2u
-    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/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
index d193a29..d54d574 100644
--- 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
@@ -1,36 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x3* m;
+  device half3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half3x3* const target, half3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half3x3* out [[buffer(0)]]) {
+  thread half3x3 m = half3x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f16>, read_write>, %value_param:mat3x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %14:vec3<f16> = access %value_param, 2u
-    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/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
index 671fd01..63fddf5 100644
--- 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
@@ -1,36 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x3* m;
+  device float3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float3x3* out [[buffer(0)]]) {
+  thread float3x3 m = float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f32>, read_write>, %value_param:mat3x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %14:vec3<f32> = access %value_param, 2u
-    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/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
index d51d719..251e0b2 100644
--- 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
@@ -1,34 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %3:void = call %tint_store_and_preserve_padding, %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
-  }
+kernel void f(device float3x3* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f32>, read_write>, %value_param:mat3x3<f32>):void {
-  $B3: {
-    %7:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %8:vec3<f32> = access %value_param, 0u
-    store %7, %8
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %10:vec3<f32> = access %value_param, 1u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %12:vec3<f32> = access %value_param, 2u
-    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/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
index d193a29..d54d574 100644
--- 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
@@ -1,36 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x3* m;
+  device half3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half3x3* const target, half3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half3x3* out [[buffer(0)]]) {
+  thread half3x3 m = half3x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f16>, read_write>, %value_param:mat3x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %14:vec3<f16> = access %value_param, 2u
-    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/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
index 671fd01..63fddf5 100644
--- 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
@@ -1,36 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x3* m;
+  device float3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float3x3* out [[buffer(0)]]) {
+  thread float3x3 m = float3x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f32>, read_write>, %value_param:mat3x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %14:vec3<f32> = access %value_param, 2u
-    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/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/load/f16.wgsl.expected.ir.msl
index 2d84436..7f80b18 100644
--- 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
@@ -1,37 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device half3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat3x3<f16>, read_write> = var @binding_point(0, 0)
+void tint_store_and_preserve_padding(device half3x3* const target, half3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %m:ptr<function, mat3x3<f16>, read_write> = var, mat3x3<f16>(vec3<f16>(0.0h))
-    %4:mat3x3<f16> = load %m
-    %5:mat3x3<f16> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device half3x3* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  half3x3 m = half3x3(half3(0.0h), half3(0.0h), half3(0.0h));
+  tint_store_and_preserve_padding(tint_module_vars.out, half3x3(m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f16>, read_write>, %value_param:mat3x3<f16>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %11:vec3<f16> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %13:vec3<f16> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %15:vec3<f16> = access %value_param, 2u
-    store %14, %15
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
index 4835e49..befce49 100644
--- 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
@@ -1,37 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat3x3<f32>, read_write> = var @binding_point(0, 0)
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %m:ptr<function, mat3x3<f32>, read_write> = var, mat3x3<f32>(vec3<f32>(0.0f))
-    %4:mat3x3<f32> = load %m
-    %5:mat3x3<f32> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device float3x3* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  float3x3 m = float3x3(float3(0.0f), float3(0.0f), float3(0.0f));
+  tint_store_and_preserve_padding(tint_module_vars.out, float3x3(m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f32>, read_write>, %value_param:mat3x3<f32>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %11:vec3<f32> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %13:vec3<f32> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %15:vec3<f32> = access %value_param, 2u
-    store %14, %15
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
index 6aaeeca..51e8405 100644
--- 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
@@ -1,36 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x3* m;
+  device half3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half3x3* const target, half3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half3x3* out [[buffer(0)]]) {
+  thread half3x3 m = half3x3(half3(0.0h), half3(0.0h), half3(0.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f16>, read_write>, %value_param:mat3x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %14:vec3<f16> = access %value_param, 2u
-    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/expressions/type_ctor/mat3x3/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat3x3/zero/f32.wgsl.expected.ir.msl
index 4b7f717..32ddcf3 100644
--- 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
@@ -1,36 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x3* m;
+  device float3x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float3x3* const target, float3x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat3x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float3x3* out [[buffer(0)]]) {
+  thread float3x3 m = float3x3(float3(0.0f), float3(0.0f), float3(0.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat3x3<f32>, read_write>, %value_param:mat3x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %14:vec3<f32> = access %value_param, 2u
-    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/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
index b2749f3..bc51772 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x4* m;
+  device half3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x4* out [[buffer(0)]]) {
+  thread half3x4 m = half3x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = half3x4((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index bfad518..76fae16 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x4* m;
+  device float3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x4* out [[buffer(0)]]) {
+  thread float3x4 m = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = float3x4((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 622dcd5..3bc3c94 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x4* m;
+  device half3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x4* out [[buffer(0)]]) {
+  thread half3x4 m = half3x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index eabe5e4..87e836e 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x4* m;
+  device float3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x4* out [[buffer(0)]]) {
+  thread float3x4 m = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 622dcd5..3bc3c94 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x4* m;
+  device half3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x4* out [[buffer(0)]]) {
+  thread half3x4 m = half3x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index eabe5e4..87e836e 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x4* m;
+  device float3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x4* out [[buffer(0)]]) {
+  thread float3x4 m = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index b2749f3..bc51772 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x4* m;
+  device half3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x4* out [[buffer(0)]]) {
+  thread half3x4 m = half3x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = half3x4((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index bfad518..76fae16 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x4* m;
+  device float3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x4* out [[buffer(0)]]) {
+  thread float3x4 m = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = float3x4((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index ba5564e..3e2e29c 100644
--- 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
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float3x4* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  (*tint_module_vars.out) = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    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
index 622dcd5..3bc3c94 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x4* m;
+  device half3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x4* out [[buffer(0)]]) {
+  thread half3x4 m = half3x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index eabe5e4..87e836e 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x4* m;
+  device float3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x4* out [[buffer(0)]]) {
+  thread float3x4 m = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index ba5564e..3e2e29c 100644
--- 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
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float3x4* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  (*tint_module_vars.out) = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    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
index 622dcd5..3bc3c94 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x4* m;
+  device half3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x4* out [[buffer(0)]]) {
+  thread half3x4 m = half3x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index eabe5e4..87e836e 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x4* m;
+  device float3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x4* out [[buffer(0)]]) {
+  thread float3x4 m = float3x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index eee4a1e..91ef6da 100644
--- 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
@@ -1,23 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device half3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat3x4<f16>, read_write> = var @binding_point(0, 0)
+kernel void f(device half3x4* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  half3x4 m = half3x4(half4(0.0h), half4(0.0h), half4(0.0h));
+  (*tint_module_vars.out) = half3x4(m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 0a1a884..d7a1834 100644
--- 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
@@ -1,23 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat3x4<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float3x4* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  float3x4 m = float3x4(float4(0.0f), float4(0.0f), float4(0.0f));
+  (*tint_module_vars.out) = float3x4(m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 02d09d0..ce0e634 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half3x4* m;
+  device half3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half3x4* out [[buffer(0)]]) {
+  thread half3x4 m = half3x4(half4(0.0h), half4(0.0h), half4(0.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index cdc34e6..f87e279 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float3x4* m;
+  device float3x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float3x4* out [[buffer(0)]]) {
+  thread float3x4 m = float3x4(float4(0.0f), float4(0.0f), float4(0.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 838e0cf..682cf05 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x2* m;
+  device half4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x2* out [[buffer(0)]]) {
+  thread half4x2 m = half4x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h), half2(6.0h, 7.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = half4x2((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 635f09a..5fd8f2b 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x2* m;
+  device float4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x2* out [[buffer(0)]]) {
+  thread float4x2 m = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = float4x2((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 2a6e7ab..fe8aa1a 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x2* m;
+  device half4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x2* out [[buffer(0)]]) {
+  thread half4x2 m = half4x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h), half2(6.0h, 7.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index aa889aa..2beb638 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x2* m;
+  device float4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x2* out [[buffer(0)]]) {
+  thread float4x2 m = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 2a6e7ab..fe8aa1a 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x2* m;
+  device half4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x2* out [[buffer(0)]]) {
+  thread half4x2 m = half4x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h), half2(6.0h, 7.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index aa889aa..2beb638 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x2* m;
+  device float4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x2* out [[buffer(0)]]) {
+  thread float4x2 m = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 838e0cf..682cf05 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x2* m;
+  device half4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x2* out [[buffer(0)]]) {
+  thread half4x2 m = half4x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h), half2(6.0h, 7.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = half4x2((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 635f09a..5fd8f2b 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x2* m;
+  device float4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x2* out [[buffer(0)]]) {
+  thread float4x2 m = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = float4x2((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 343fbe3..4213fd0 100644
--- 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
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float4x2* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  (*tint_module_vars.out) = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    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
index 2a6e7ab..fe8aa1a 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x2* m;
+  device half4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x2* out [[buffer(0)]]) {
+  thread half4x2 m = half4x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h), half2(6.0h, 7.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index aa889aa..2beb638 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x2* m;
+  device float4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x2* out [[buffer(0)]]) {
+  thread float4x2 m = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 343fbe3..4213fd0 100644
--- 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
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float4x2* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  (*tint_module_vars.out) = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    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
index 2a6e7ab..fe8aa1a 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x2* m;
+  device half4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x2* out [[buffer(0)]]) {
+  thread half4x2 m = half4x2(half2(0.0h, 1.0h), half2(2.0h, 3.0h), half2(4.0h, 5.0h), half2(6.0h, 7.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index aa889aa..2beb638 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x2* m;
+  device float4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x2* out [[buffer(0)]]) {
+  thread float4x2 m = float4x2(float2(0.0f, 1.0f), float2(2.0f, 3.0f), float2(4.0f, 5.0f), float2(6.0f, 7.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 588c5c4..f9b6e38 100644
--- 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
@@ -1,23 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device half4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat4x2<f16>, read_write> = var @binding_point(0, 0)
+kernel void f(device half4x2* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  half4x2 m = half4x2(half2(0.0h), half2(0.0h), half2(0.0h), half2(0.0h));
+  (*tint_module_vars.out) = half4x2(m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index de58a0b..4232333 100644
--- 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
@@ -1,23 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat4x2<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float4x2* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  float4x2 m = float4x2(float2(0.0f), float2(0.0f), float2(0.0f), float2(0.0f));
+  (*tint_module_vars.out) = float4x2(m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index f6160a4..9004e83 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x2* m;
+  device half4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x2* out [[buffer(0)]]) {
+  thread half4x2 m = half4x2(half2(0.0h), half2(0.0h), half2(0.0h), half2(0.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index f001a30..fab4f75 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x2* m;
+  device float4x2* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x2* out [[buffer(0)]]) {
+  thread float4x2 m = float4x2(float2(0.0f), float2(0.0f), float2(0.0f), float2(0.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 84cc74e..7f337f7 100644
--- 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
@@ -1,40 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x3* m;
+  device half4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half4x3* const target, half4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f16> = load %m
-    %5:mat4x3<f16> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device half4x3* out [[buffer(0)]]) {
+  thread half4x3 m = half4x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h), half3(9.0h, 10.0h, 11.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, half4x3((*tint_module_vars.m)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f16>, read_write>, %value_param:mat4x3<f16>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %11:vec3<f16> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %13:vec3<f16> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %15:vec3<f16> = access %value_param, 2u
-    store %14, %15
-    %16:ptr<storage, vec3<f16>, read_write> = access %target, 3u
-    %17:vec3<f16> = access %value_param, 3u
-    store %16, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
index e834e13..ddbce20 100644
--- 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
@@ -1,40 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x3* m;
+  device float4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f32> = load %m
-    %5:mat4x3<f32> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device float4x3* out [[buffer(0)]]) {
+  thread float4x3 m = float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, float4x3((*tint_module_vars.m)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f32>, read_write>, %value_param:mat4x3<f32>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %11:vec3<f32> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %13:vec3<f32> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %15:vec3<f32> = access %value_param, 2u
-    store %14, %15
-    %16:ptr<storage, vec3<f32>, read_write> = access %target, 3u
-    %17:vec3<f32> = access %value_param, 3u
-    store %16, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
index df6b7ce..93e1d80 100644
--- 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
@@ -1,39 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x3* m;
+  device half4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half4x3* const target, half4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half4x3* out [[buffer(0)]]) {
+  thread half4x3 m = half4x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h), half3(9.0h, 10.0h, 11.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f16>, read_write>, %value_param:mat4x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %14:vec3<f16> = access %value_param, 2u
-    store %13, %14
-    %15:ptr<storage, vec3<f16>, read_write> = access %target, 3u
-    %16:vec3<f16> = access %value_param, 3u
-    store %15, %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/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
index e65757c..113532e 100644
--- 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
@@ -1,39 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x3* m;
+  device float4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float4x3* out [[buffer(0)]]) {
+  thread float4x3 m = float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f32>, read_write>, %value_param:mat4x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %14:vec3<f32> = access %value_param, 2u
-    store %13, %14
-    %15:ptr<storage, vec3<f32>, read_write> = access %target, 3u
-    %16:vec3<f32> = access %value_param, 3u
-    store %15, %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/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
index df6b7ce..93e1d80 100644
--- 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
@@ -1,39 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x3* m;
+  device half4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half4x3* const target, half4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half4x3* out [[buffer(0)]]) {
+  thread half4x3 m = half4x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h), half3(9.0h, 10.0h, 11.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f16>, read_write>, %value_param:mat4x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %14:vec3<f16> = access %value_param, 2u
-    store %13, %14
-    %15:ptr<storage, vec3<f16>, read_write> = access %target, 3u
-    %16:vec3<f16> = access %value_param, 3u
-    store %15, %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/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
index e65757c..113532e 100644
--- 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
@@ -1,39 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x3* m;
+  device float4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float4x3* out [[buffer(0)]]) {
+  thread float4x3 m = float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f32>, read_write>, %value_param:mat4x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %14:vec3<f32> = access %value_param, 2u
-    store %13, %14
-    %15:ptr<storage, vec3<f32>, read_write> = access %target, 3u
-    %16:vec3<f32> = access %value_param, 3u
-    store %15, %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/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
index 84cc74e..7f337f7 100644
--- 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
@@ -1,40 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x3* m;
+  device half4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half4x3* const target, half4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f16> = load %m
-    %5:mat4x3<f16> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device half4x3* out [[buffer(0)]]) {
+  thread half4x3 m = half4x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h), half3(9.0h, 10.0h, 11.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, half4x3((*tint_module_vars.m)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f16>, read_write>, %value_param:mat4x3<f16>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %11:vec3<f16> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %13:vec3<f16> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %15:vec3<f16> = access %value_param, 2u
-    store %14, %15
-    %16:ptr<storage, vec3<f16>, read_write> = access %target, 3u
-    %17:vec3<f16> = access %value_param, 3u
-    store %16, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
index e834e13..ddbce20 100644
--- 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
@@ -1,40 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x3* m;
+  device float4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f32> = load %m
-    %5:mat4x3<f32> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device float4x3* out [[buffer(0)]]) {
+  thread float4x3 m = float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, float4x3((*tint_module_vars.m)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f32>, read_write>, %value_param:mat4x3<f32>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %11:vec3<f32> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %13:vec3<f32> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %15:vec3<f32> = access %value_param, 2u
-    store %14, %15
-    %16:ptr<storage, vec3<f32>, read_write> = access %target, 3u
-    %17:vec3<f32> = access %value_param, 3u
-    store %16, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
index 9ac57da..a659c88 100644
--- 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
@@ -1,37 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 0)
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %3:void = call %tint_store_and_preserve_padding, %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
-  }
+kernel void f(device float4x3* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f32>, read_write>, %value_param:mat4x3<f32>):void {
-  $B3: {
-    %7:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %8:vec3<f32> = access %value_param, 0u
-    store %7, %8
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %10:vec3<f32> = access %value_param, 1u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %12:vec3<f32> = access %value_param, 2u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 3u
-    %14:vec3<f32> = access %value_param, 3u
-    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/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
index df6b7ce..93e1d80 100644
--- 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
@@ -1,39 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x3* m;
+  device half4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half4x3* const target, half4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half4x3* out [[buffer(0)]]) {
+  thread half4x3 m = half4x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h), half3(9.0h, 10.0h, 11.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f16>, read_write>, %value_param:mat4x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %14:vec3<f16> = access %value_param, 2u
-    store %13, %14
-    %15:ptr<storage, vec3<f16>, read_write> = access %target, 3u
-    %16:vec3<f16> = access %value_param, 3u
-    store %15, %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/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
index e65757c..113532e 100644
--- 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
@@ -1,39 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x3* m;
+  device float4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float4x3* out [[buffer(0)]]) {
+  thread float4x3 m = float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f32>, read_write>, %value_param:mat4x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %14:vec3<f32> = access %value_param, 2u
-    store %13, %14
-    %15:ptr<storage, vec3<f32>, read_write> = access %target, 3u
-    %16:vec3<f32> = access %value_param, 3u
-    store %15, %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/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
index 9ac57da..a659c88 100644
--- 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
@@ -1,37 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 0)
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %3:void = call %tint_store_and_preserve_padding, %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
-  }
+kernel void f(device float4x3* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f)));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f32>, read_write>, %value_param:mat4x3<f32>):void {
-  $B3: {
-    %7:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %8:vec3<f32> = access %value_param, 0u
-    store %7, %8
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %10:vec3<f32> = access %value_param, 1u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %12:vec3<f32> = access %value_param, 2u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 3u
-    %14:vec3<f32> = access %value_param, 3u
-    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/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
index df6b7ce..93e1d80 100644
--- 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
@@ -1,39 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x3* m;
+  device half4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half4x3* const target, half4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half4x3* out [[buffer(0)]]) {
+  thread half4x3 m = half4x3(half3(0.0h, 1.0h, 2.0h), half3(3.0h, 4.0h, 5.0h), half3(6.0h, 7.0h, 8.0h), half3(9.0h, 10.0h, 11.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f16>, read_write>, %value_param:mat4x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %14:vec3<f16> = access %value_param, 2u
-    store %13, %14
-    %15:ptr<storage, vec3<f16>, read_write> = access %target, 3u
-    %16:vec3<f16> = access %value_param, 3u
-    store %15, %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/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
index e65757c..113532e 100644
--- 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
@@ -1,39 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x3* m;
+  device float4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float4x3* out [[buffer(0)]]) {
+  thread float4x3 m = float4x3(float3(0.0f, 1.0f, 2.0f), float3(3.0f, 4.0f, 5.0f), float3(6.0f, 7.0f, 8.0f), float3(9.0f, 10.0f, 11.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f32>, read_write>, %value_param:mat4x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %14:vec3<f32> = access %value_param, 2u
-    store %13, %14
-    %15:ptr<storage, vec3<f32>, read_write> = access %target, 3u
-    %16:vec3<f32> = access %value_param, 3u
-    store %15, %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/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/load/f16.wgsl.expected.ir.msl
index b2d5c8a..a781ea3 100644
--- 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
@@ -1,40 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device half4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat4x3<f16>, read_write> = var @binding_point(0, 0)
+void tint_store_and_preserve_padding(device half4x3* const target, half4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %m:ptr<function, mat4x3<f16>, read_write> = var, mat4x3<f16>(vec3<f16>(0.0h))
-    %4:mat4x3<f16> = load %m
-    %5:mat4x3<f16> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device half4x3* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  half4x3 m = half4x3(half3(0.0h), half3(0.0h), half3(0.0h), half3(0.0h));
+  tint_store_and_preserve_padding(tint_module_vars.out, half4x3(m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f16>, read_write>, %value_param:mat4x3<f16>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %11:vec3<f16> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %13:vec3<f16> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %15:vec3<f16> = access %value_param, 2u
-    store %14, %15
-    %16:ptr<storage, vec3<f16>, read_write> = access %target, 3u
-    %17:vec3<f16> = access %value_param, 3u
-    store %16, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
index e70076e..8c4aef5 100644
--- 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
@@ -1,40 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat4x3<f32>, read_write> = var @binding_point(0, 0)
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %m:ptr<function, mat4x3<f32>, read_write> = var, mat4x3<f32>(vec3<f32>(0.0f))
-    %4:mat4x3<f32> = load %m
-    %5:mat4x3<f32> = construct %4
-    %6:void = call %tint_store_and_preserve_padding, %out, %5
-    ret
-  }
+kernel void f(device float4x3* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  float4x3 m = float4x3(float3(0.0f), float3(0.0f), float3(0.0f), float3(0.0f));
+  tint_store_and_preserve_padding(tint_module_vars.out, float4x3(m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f32>, read_write>, %value_param:mat4x3<f32>):void {
-  $B3: {
-    %10:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %11:vec3<f32> = access %value_param, 0u
-    store %10, %11
-    %12:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %13:vec3<f32> = access %value_param, 1u
-    store %12, %13
-    %14:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %15:vec3<f32> = access %value_param, 2u
-    store %14, %15
-    %16:ptr<storage, vec3<f32>, read_write> = access %target, 3u
-    %17:vec3<f32> = access %value_param, 3u
-    store %16, %17
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
index c92d020..7ba6fe0 100644
--- 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
@@ -1,39 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x3* m;
+  device half4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device half4x3* const target, half4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f16> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device half4x3* out [[buffer(0)]]) {
+  thread half4x3 m = half4x3(half3(0.0h), half3(0.0h), half3(0.0h), half3(0.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f16>, read_write>, %value_param:mat4x3<f16>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f16>, read_write> = access %target, 0u
-    %10:vec3<f16> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f16>, read_write> = access %target, 1u
-    %12:vec3<f16> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f16>, read_write> = access %target, 2u
-    %14:vec3<f16> = access %value_param, 2u
-    store %13, %14
-    %15:ptr<storage, vec3<f16>, read_write> = access %target, 3u
-    %16:vec3<f16> = access %value_param, 3u
-    store %15, %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/expressions/type_ctor/mat4x3/zero/f32.wgsl.expected.ir.msl b/test/tint/expressions/type_ctor/mat4x3/zero/f32.wgsl.expected.ir.msl
index e9865f9..fd2382b 100644
--- 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
@@ -1,39 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x3* m;
+  device float4x3* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+void tint_store_and_preserve_padding(device float4x3* const target, float4x3 value_param) {
+  (*target)[0u] = value_param[0u];
+  (*target)[1u] = value_param[1u];
+  (*target)[2u] = value_param[2u];
+  (*target)[3u] = value_param[3u];
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:mat4x3<f32> = load %m
-    %5:void = call %tint_store_and_preserve_padding, %out, %4
-    ret
-  }
+kernel void f(device float4x3* out [[buffer(0)]]) {
+  thread float4x3 m = float4x3(float3(0.0f), float3(0.0f), float3(0.0f), float3(0.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  tint_store_and_preserve_padding(tint_module_vars.out, (*tint_module_vars.m));
 }
-%tint_store_and_preserve_padding = func(%target:ptr<storage, mat4x3<f32>, read_write>, %value_param:mat4x3<f32>):void {
-  $B3: {
-    %9:ptr<storage, vec3<f32>, read_write> = access %target, 0u
-    %10:vec3<f32> = access %value_param, 0u
-    store %9, %10
-    %11:ptr<storage, vec3<f32>, read_write> = access %target, 1u
-    %12:vec3<f32> = access %value_param, 1u
-    store %11, %12
-    %13:ptr<storage, vec3<f32>, read_write> = access %target, 2u
-    %14:vec3<f32> = access %value_param, 2u
-    store %13, %14
-    %15:ptr<storage, vec3<f32>, read_write> = access %target, 3u
-    %16:vec3<f32> = access %value_param, 3u
-    store %15, %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/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
index 3eba67e..5366300 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x4* m;
+  device half4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x4* out [[buffer(0)]]) {
+  thread half4x4 m = half4x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h), half4(12.0h, 13.0h, 14.0h, 15.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = half4x4((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 250a01c..fa069a1 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x4* m;
+  device float4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x4* out [[buffer(0)]]) {
+  thread float4x4 m = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = float4x4((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index e8a0c48..1c7f1e0 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x4* m;
+  device half4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x4* out [[buffer(0)]]) {
+  thread half4x4 m = half4x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h), half4(12.0h, 13.0h, 14.0h, 15.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index b143f20..7b8a342 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x4* m;
+  device float4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x4* out [[buffer(0)]]) {
+  thread float4x4 m = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index e8a0c48..1c7f1e0 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x4* m;
+  device half4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x4* out [[buffer(0)]]) {
+  thread half4x4 m = half4x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h), half4(12.0h, 13.0h, 14.0h, 15.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index b143f20..7b8a342 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x4* m;
+  device float4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x4* out [[buffer(0)]]) {
+  thread float4x4 m = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 3eba67e..5366300 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x4* m;
+  device half4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x4* out [[buffer(0)]]) {
+  thread half4x4 m = half4x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h), half4(12.0h, 13.0h, 14.0h, 15.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = half4x4((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 250a01c..fa069a1 100644
--- 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
@@ -1,23 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x4* m;
+  device float4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x4* out [[buffer(0)]]) {
+  thread float4x4 m = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = float4x4((*tint_module_vars.m));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index c0e6669..80649b5 100644
--- 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
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float4x4* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  (*tint_module_vars.out) = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    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
index e8a0c48..1c7f1e0 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x4* m;
+  device half4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x4* out [[buffer(0)]]) {
+  thread half4x4 m = half4x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h), half4(12.0h, 13.0h, 14.0h, 15.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index b143f20..7b8a342 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x4* m;
+  device float4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x4* out [[buffer(0)]]) {
+  thread float4x4 m = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index c0e6669..80649b5 100644
--- 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
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float4x4* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  (*tint_module_vars.out) = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    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
index e8a0c48..1c7f1e0 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x4* m;
+  device half4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x4* out [[buffer(0)]]) {
+  thread half4x4 m = half4x4(half4(0.0h, 1.0h, 2.0h, 3.0h), half4(4.0h, 5.0h, 6.0h, 7.0h), half4(8.0h, 9.0h, 10.0h, 11.0h), half4(12.0h, 13.0h, 14.0h, 15.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index b143f20..7b8a342 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x4* m;
+  device float4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x4* out [[buffer(0)]]) {
+  thread float4x4 m = float4x4(float4(0.0f, 1.0f, 2.0f, 3.0f), float4(4.0f, 5.0f, 6.0f, 7.0f), float4(8.0f, 9.0f, 10.0f, 11.0f), float4(12.0f, 13.0f, 14.0f, 15.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 1c8cd6e..7f0df97 100644
--- 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
@@ -1,23 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device half4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat4x4<f16>, read_write> = var @binding_point(0, 0)
+kernel void f(device half4x4* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  half4x4 m = half4x4(half4(0.0h), half4(0.0h), half4(0.0h), half4(0.0h));
+  (*tint_module_vars.out) = half4x4(m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 46c9871..5e621d2 100644
--- 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
@@ -1,23 +1,11 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %out:ptr<storage, mat4x4<f32>, read_write> = var @binding_point(0, 0)
+kernel void f(device float4x4* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  float4x4 m = float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f));
+  (*tint_module_vars.out) = float4x4(m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index c8a0634..546cb14 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread half4x4* m;
+  device half4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device half4x4* out [[buffer(0)]]) {
+  thread half4x4 m = half4x4(half4(0.0h), half4(0.0h), half4(0.0h), half4(0.0h));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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
index 4d5a209..6c53af1 100644
--- 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
@@ -1,22 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  thread float4x4* m;
+  device float4x4* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
+kernel void f(device float4x4* out [[buffer(0)]]) {
+  thread float4x4 m = float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f));
+  tint_module_vars_struct const tint_module_vars = {.m=(&m), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.m);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %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/identifiers/underscore/double/alias.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/alias.wgsl.expected.ir.msl
index 02ab5e8..72701cb 100644
--- a/test/tint/identifiers/underscore/double/alias.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/double/alias.wgsl.expected.ir.msl
@@ -1,25 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+kernel void f(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  int c = 0;
+  int d = 0;
+  (*tint_module_vars.s) = (c + d);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %c:ptr<function, i32, read_write> = var
-    %d:ptr<function, i32, read_write> = var
-    %5:i32 = load %c
-    %6:i32 = load %d
-    %7:i32 = add %5, %6
-    store %s, %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/identifiers/underscore/double/const.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/const.wgsl.expected.ir.msl
index 2414db8..b4da174 100644
--- a/test/tint/identifiers/underscore/double/const.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/double/const.wgsl.expected.ir.msl
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+kernel void f(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  (*tint_module_vars.s) = 3;
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    store %s, 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/identifiers/underscore/double/let.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/let.wgsl.expected.ir.msl
index d4a08cd..4a1d8ab 100644
--- a/test/tint/identifiers/underscore/double/let.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/double/let.wgsl.expected.ir.msl
@@ -1,27 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+kernel void f(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  int const a = 1;
+  int const a__ = a;
+  int const b = a;
+  int const b__ = a__;
+  (*tint_module_vars.s) = (((a + a__) + b) + b__);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %a:i32 = let 1i
-    %a__:i32 = let %a
-    %b:i32 = let %a
-    %b__:i32 = let %a__
-    %7:i32 = add %a, %a__
-    %8:i32 = add %7, %b
-    %9:i32 = add %8, %b__
-    store %s, %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/identifiers/underscore/double/parameter.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/parameter.wgsl.expected.ir.msl
index 14a631f..58219fa 100644
--- a/test/tint/identifiers/underscore/double/parameter.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/double/parameter.wgsl.expected.ir.msl
@@ -1,27 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+void f(int a__, tint_module_vars_struct tint_module_vars) {
+  int const b = a__;
+  (*tint_module_vars.s) = b;
 }
-
-%f = func(%a__:i32):void {
-  $B2: {
-    %b:i32 = let %a__
-    store %s, %b
-    ret
-  }
+kernel void tint_symbol(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  f(1, tint_module_vars);
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:void = call %f, 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/identifiers/underscore/double/struct.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/struct.wgsl.expected.ir.msl
index 16e0624..13991e1 100644
--- a/test/tint/identifiers/underscore/double/struct.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/double/struct.wgsl.expected.ir.msl
@@ -1,29 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
+struct a__ {
+  int b__;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: a__ = struct @align(4) {
-  b__:i32 @offset(0)
+kernel void f(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  a__ const c = a__{};
+  int const d = c.b__;
+  (*tint_module_vars.s) = (c.b__ + d);
 }
-
-$B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %c:a__ = let a__(0i)
-    %4:i32 = access %c, 0u
-    %d:i32 = let %4
-    %6:i32 = access %c, 0u
-    %7:i32 = add %6, %d
-    store %s, %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/identifiers/underscore/double/var.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/double/var.wgsl.expected.ir.msl
index d017af5..eec150f 100644
--- a/test/tint/identifiers/underscore/double/var.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/double/var.wgsl.expected.ir.msl
@@ -1,29 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+  thread int* a;
+  thread int* a__;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
-  %a:ptr<private, i32, read_write> = var, 1i
-  %a__:ptr<private, i32, read_write> = var, 2i
+kernel void f(device int* s [[buffer(0)]]) {
+  thread int a = 1;
+  thread int a__ = 2;
+  tint_module_vars_struct const tint_module_vars = {.s=s, .a=(&a), .a__=(&a__)};
+  int b = (*tint_module_vars.a);
+  int b__ = (*tint_module_vars.a__);
+  (*tint_module_vars.s) = (b + b__);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:i32 = load %a
-    %b:ptr<function, i32, read_write> = var, %5
-    %7:i32 = load %a__
-    %b__:ptr<function, i32, read_write> = var, %7
-    %9:i32 = load %b
-    %10:i32 = load %b__
-    %11:i32 = add %9, %10
-    store %s, %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/identifiers/underscore/prefix/lower/alias.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/alias.wgsl.expected.ir.msl
index 02ab5e8..72701cb 100644
--- a/test/tint/identifiers/underscore/prefix/lower/alias.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/lower/alias.wgsl.expected.ir.msl
@@ -1,25 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+kernel void f(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  int c = 0;
+  int d = 0;
+  (*tint_module_vars.s) = (c + d);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %c:ptr<function, i32, read_write> = var
-    %d:ptr<function, i32, read_write> = var
-    %5:i32 = load %c
-    %6:i32 = load %d
-    %7:i32 = add %5, %6
-    store %s, %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/identifiers/underscore/prefix/lower/const.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/const.wgsl.expected.ir.msl
index 2414db8..b4da174 100644
--- a/test/tint/identifiers/underscore/prefix/lower/const.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/lower/const.wgsl.expected.ir.msl
@@ -1,20 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+kernel void f(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  (*tint_module_vars.s) = 3;
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    store %s, 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/identifiers/underscore/prefix/lower/let.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.ir.msl
index 1a3ece5..79209c7 100644
--- a/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/lower/let.wgsl.expected.ir.msl
@@ -1,27 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+kernel void f(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  int const a = 1;
+  int const _a = a;
+  int const b = a;
+  int const _b = _a;
+  (*tint_module_vars.s) = (((a + _a) + b) + _b);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %a:i32 = let 1i
-    %_a:i32 = let %a
-    %b:i32 = let %a
-    %_b:i32 = let %_a
-    %7:i32 = add %a, %_a
-    %8:i32 = add %7, %b
-    %9:i32 = add %8, %_b
-    store %s, %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/identifiers/underscore/prefix/lower/parameter.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/parameter.wgsl.expected.ir.msl
index 6e35dc2..0c594d0 100644
--- a/test/tint/identifiers/underscore/prefix/lower/parameter.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/lower/parameter.wgsl.expected.ir.msl
@@ -1,27 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+void f(int _a, tint_module_vars_struct tint_module_vars) {
+  int const b = _a;
+  (*tint_module_vars.s) = b;
 }
-
-%f = func(%_a:i32):void {
-  $B2: {
-    %b:i32 = let %_a
-    store %s, %b
-    ret
-  }
+kernel void tint_symbol(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  f(1, tint_module_vars);
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:void = call %f, 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/identifiers/underscore/prefix/lower/struct.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.ir.msl
index b13e311..b2a502f 100644
--- a/test/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/lower/struct.wgsl.expected.ir.msl
@@ -1,29 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
+struct _a {
+  int _b;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: _a = struct @align(4) {
-  _b:i32 @offset(0)
+kernel void f(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  _a const c = _a{};
+  int const d = c._b;
+  (*tint_module_vars.s) = (c._b + d);
 }
-
-$B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %c:_a = let _a(0i)
-    %4:i32 = access %c, 0u
-    %d:i32 = let %4
-    %6:i32 = access %c, 0u
-    %7:i32 = add %6, %d
-    store %s, %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/identifiers/underscore/prefix/lower/var.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/lower/var.wgsl.expected.ir.msl
index 9605c8b..001f6c4 100644
--- a/test/tint/identifiers/underscore/prefix/lower/var.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/lower/var.wgsl.expected.ir.msl
@@ -1,29 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+  thread int* a;
+  thread int* _a;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
-  %a:ptr<private, i32, read_write> = var, 1i
-  %_a:ptr<private, i32, read_write> = var, 2i
+kernel void f(device int* s [[buffer(0)]]) {
+  thread int a = 1;
+  thread int _a = 2;
+  tint_module_vars_struct const tint_module_vars = {.s=s, .a=(&a), ._a=(&_a)};
+  int b = (*tint_module_vars.a);
+  int _b = (*tint_module_vars._a);
+  (*tint_module_vars.s) = (b + _b);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:i32 = load %a
-    %b:ptr<function, i32, read_write> = var, %5
-    %7:i32 = load %_a
-    %_b:ptr<function, i32, read_write> = var, %7
-    %9:i32 = load %b
-    %10:i32 = load %_b
-    %11:i32 = add %9, %10
-    store %s, %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/identifiers/underscore/prefix/upper/alias.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/upper/alias.wgsl.expected.ir.msl
index 02ab5e8..72701cb 100644
--- a/test/tint/identifiers/underscore/prefix/upper/alias.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/upper/alias.wgsl.expected.ir.msl
@@ -1,25 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+kernel void f(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  int c = 0;
+  int d = 0;
+  (*tint_module_vars.s) = (c + d);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %c:ptr<function, i32, read_write> = var
-    %d:ptr<function, i32, read_write> = var
-    %5:i32 = load %c
-    %6:i32 = load %d
-    %7:i32 = add %5, %6
-    store %s, %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/identifiers/underscore/prefix/upper/let.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.ir.msl
index 7eee399..ba974b4 100644
--- a/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/upper/let.wgsl.expected.ir.msl
@@ -1,27 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+kernel void f(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  int const A = 1;
+  int const _A = 2;
+  int const B = A;
+  int const _B = _A;
+  (*tint_module_vars.s) = (((A + _A) + B) + _B);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %A:i32 = let 1i
-    %_A:i32 = let 2i
-    %B:i32 = let %A
-    %_B:i32 = let %_A
-    %7:i32 = add %A, %_A
-    %8:i32 = add %7, %B
-    %9:i32 = add %8, %_B
-    store %s, %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/identifiers/underscore/prefix/upper/parameter.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/upper/parameter.wgsl.expected.ir.msl
index db464a8..6553670 100644
--- a/test/tint/identifiers/underscore/prefix/upper/parameter.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/upper/parameter.wgsl.expected.ir.msl
@@ -1,27 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+void f(int _A, tint_module_vars_struct tint_module_vars) {
+  int const B = _A;
+  (*tint_module_vars.s) = B;
 }
-
-%f = func(%_A:i32):void {
-  $B2: {
-    %B:i32 = let %_A
-    store %s, %B
-    ret
-  }
+kernel void tint_symbol(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  f(1, tint_module_vars);
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:void = call %f, 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/identifiers/underscore/prefix/upper/struct.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.ir.msl
index b912fa9..978dc46 100644
--- a/test/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/upper/struct.wgsl.expected.ir.msl
@@ -1,29 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+};
+struct _A {
+  int _B;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: _A = struct @align(4) {
-  _B:i32 @offset(0)
+kernel void f(device int* s [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.s=s};
+  _A const c = _A{};
+  int const d = c._B;
+  (*tint_module_vars.s) = (c._B + d);
 }
-
-$B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %c:_A = let _A(0i)
-    %4:i32 = access %c, 0u
-    %d:i32 = let %4
-    %6:i32 = access %c, 0u
-    %7:i32 = add %6, %d
-    store %s, %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/identifiers/underscore/prefix/upper/var.wgsl.expected.ir.msl b/test/tint/identifiers/underscore/prefix/upper/var.wgsl.expected.ir.msl
index 7c016a8..3bf815f 100644
--- a/test/tint/identifiers/underscore/prefix/upper/var.wgsl.expected.ir.msl
+++ b/test/tint/identifiers/underscore/prefix/upper/var.wgsl.expected.ir.msl
@@ -1,29 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* s;
+  thread int* A;
+  thread int* _A;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %s:ptr<storage, i32, read_write> = var @binding_point(0, 0)
-  %A:ptr<private, i32, read_write> = var, 1i
-  %_A:ptr<private, i32, read_write> = var, 2i
+kernel void f(device int* s [[buffer(0)]]) {
+  thread int A = 1;
+  thread int _A = 2;
+  tint_module_vars_struct const tint_module_vars = {.s=s, .A=(&A), ._A=(&_A)};
+  int B = (*tint_module_vars.A);
+  int _B = (*tint_module_vars._A);
+  (*tint_module_vars.s) = (B + _B);
 }
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %5:i32 = load %A
-    %B:ptr<function, i32, read_write> = var, %5
-    %7:i32 = load %_A
-    %_B:ptr<function, i32, read_write> = var, %7
-    %9:i32 = load %B
-    %10:i32 = load %_B
-    %11:i32 = add %9, %10
-    store %s, %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/layout/storage/mat2x2/f32.wgsl.expected.ir.msl b/test/tint/layout/storage/mat2x2/f32.wgsl.expected.ir.msl
index 8429213..83f2ad3 100644
--- a/test/tint/layout/storage/mat2x2/f32.wgsl.expected.ir.msl
+++ b/test/tint/layout/storage/mat2x2/f32.wgsl.expected.ir.msl
@@ -1,28 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct SSBO {
+  float2x2 m;
+};
+struct tint_module_vars_struct {
+  device SSBO* ssbo;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: SSBO = struct @align(8) {
-  m:mat2x2<f32> @offset(0)
+kernel void f(device SSBO* ssbo [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.ssbo=ssbo};
+  float2x2 const v = (*tint_module_vars.ssbo).m;
+  (*tint_module_vars.ssbo).m = v;
 }
-
-$B1: {  # root
-  %ssbo:ptr<storage, SSBO, read_write> = var @binding_point(0, 0)
-}
-
-%f = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %3:ptr<storage, mat2x2<f32>, read_write> = access %ssbo, 0u
-    %4:mat2x2<f32> = load %3
-    %v:mat2x2<f32> = let %4
-    %6:ptr<storage, mat2x2<f32>, read_write> = access %ssbo, 0u
-    store %6, %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/out_of_order_decls/array/alias.wgsl.expected.ir.msl b/test/tint/out_of_order_decls/array/alias.wgsl.expected.ir.msl
index 61afed3..ae31a83 100644
--- 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
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,12 +12,12 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<int, 4>* A;
+};
 
-thread tint_array<int, 4> A = {};
 fragment void f() {
-  A[0] = 1;
+  thread tint_array<int, 4> A = {};
+  tint_module_vars_struct const tint_module_vars = {.A=(&A)};
+  (*tint_module_vars.A)[0] = 1;
 }
-program_source:16:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 4> A = {};
-                          ^
-
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
index 6a4b89d..ff62074 100644
--- 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
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -17,12 +15,12 @@
 struct S {
   int m;
 };
+struct tint_module_vars_struct {
+  thread tint_array<S, 4>* A;
+};
 
-thread tint_array<S, 4> A = {};
 fragment void f() {
-  A[0] = S{.m=1};
+  thread tint_array<S, 4> A = {};
+  tint_module_vars_struct const tint_module_vars = {.A=(&A)};
+  (*tint_module_vars.A)[0] = S{.m=1};
 }
-program_source:19:25: error: program scope variable must reside in constant address space
-thread tint_array<S, 4> A = {};
-                        ^
-
diff --git a/test/tint/out_of_order_decls/func/var.wgsl.expected.ir.msl b/test/tint/out_of_order_decls/func/var.wgsl.expected.ir.msl
index afda7c5..7f63f6a 100644
--- a/test/tint/out_of_order_decls/func/var.wgsl.expected.ir.msl
+++ b/test/tint/out_of_order_decls/func/var.wgsl.expected.ir.msl
@@ -1,16 +1,11 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* a;
+};
 
-thread int a = 1;
 fragment void f() {
-  int const b = a;
+  thread int a = 1;
+  tint_module_vars_struct const tint_module_vars = {.a=(&a)};
+  int const b = (*tint_module_vars.a);
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int a = 1;
-           ^
-program_source:6:13: warning: unused variable 'b' [-Wunused-variable]
-  int const b = a;
-            ^
-
diff --git a/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.msl b/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.msl
index ab4c76f..f50b494 100644
--- a/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/access/matrix.wgsl.expected.ir.msl
@@ -1,20 +1,8 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 kernel void tint_symbol() {
   float3x3 m = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
-  thread float3* const v = m[1];
-  v = float3(5.0f);
+  thread float3* const v = (&m[1]);
+  (*v) = float3(5.0f);
 }
-program_source:6:24: error: cannot initialize a variable of type 'float3 *const' with an lvalue of type 'vec<float, 3>' (vector of 3 'float' values)
-  thread float3* const v = m[1];
-                       ^   ~~~~
-program_source:7:5: error: cannot assign to variable 'v' with const-qualified type 'float3 *const'
-  v = float3(5.0f);
-  ~ ^
-program_source:6:24: note: variable 'v' declared const here
-  thread float3* const v = m[1];
-  ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
-
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
index f08e7dd..a93fc0f 100644
--- a/test/tint/ptr_ref/load/global/i32.spvasm.expected.ir.msl
+++ b/test/tint/ptr_ref/load/global/i32.spvasm.expected.ir.msl
@@ -1,19 +1,14 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* I;
+};
 
-thread int I = 0;
-void main_1() {
-  int const x_11 = (I + 1);
+void main_1(tint_module_vars_struct tint_module_vars) {
+  int const x_11 = ((*tint_module_vars.I) + 1);
 }
 kernel void tint_symbol() {
-  main_1();
+  thread int I = 0;
+  tint_module_vars_struct const tint_module_vars = {.I=(&I)};
+  main_1(tint_module_vars);
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int I = 0;
-           ^
-program_source:6:13: warning: unused variable 'x_11' [-Wunused-variable]
-  int const x_11 = (I + 1);
-            ^
-
diff --git a/test/tint/ptr_ref/load/global/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/global/i32.wgsl.expected.ir.msl
index 48870d6..80853a1 100644
--- a/test/tint/ptr_ref/load/global/i32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/global/i32.wgsl.expected.ir.msl
@@ -1,17 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* I;
+};
 
-thread int I = 0;
 kernel void tint_symbol() {
-  int const i = I;
+  thread int I = 0;
+  tint_module_vars_struct const tint_module_vars = {.I=(&I)};
+  int const i = (*tint_module_vars.I);
   int const u = (i + 1);
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int I = 0;
-           ^
-program_source:7:13: warning: unused variable 'u' [-Wunused-variable]
-  int const u = (i + 1);
-            ^
-
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
index ebcf5ae..5335a0a 100644
--- 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
@@ -1,20 +1,18 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct S {
   int i;
 };
+struct tint_module_vars_struct {
+  thread S* V;
+};
 
-thread S V = {};
-void main_1() {
+void main_1(tint_module_vars_struct tint_module_vars) {
   int i = 0;
-  i = V.i;
+  i = (*tint_module_vars.V).i;
 }
 kernel void tint_symbol() {
-  main_1();
+  thread S V = {};
+  tint_module_vars_struct const tint_module_vars = {.V=(&V)};
+  main_1(tint_module_vars);
 }
-program_source:7:10: error: program scope variable must reside in constant address space
-thread S V = {};
-         ^
-
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
index 5941748..07b75d3 100644
--- 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
@@ -1,19 +1,14 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct S {
   int i;
 };
+struct tint_module_vars_struct {
+  thread S* V;
+};
 
-thread S V = {};
 kernel void tint_symbol() {
-  int const i = V.i;
+  thread S V = {};
+  tint_module_vars_struct const tint_module_vars = {.V=(&V)};
+  int const i = (*tint_module_vars.V).i;
 }
-program_source:7:10: error: program scope variable must reside in constant address space
-thread S V = {};
-         ^
-program_source:9:13: warning: unused variable 'i' [-Wunused-variable]
-  int const i = V.i;
-            ^
-
diff --git a/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.ir.msl
index 7eab9cb..3c5aef3 100644
--- a/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/local/ptr_function.wgsl.expected.ir.msl
@@ -1,17 +1,8 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 kernel void tint_symbol() {
   int i = 123;
-  thread int* const p = i;
-  int const u = (p + 1);
+  thread int* const p = (&i);
+  int const u = ((*p) + 1);
 }
-program_source:6:21: error: cannot initialize a variable of type 'int *const' with an lvalue of type 'int'
-  thread int* const p = i;
-                    ^   ~
-program_source:7:13: error: cannot initialize a variable of type 'const int' with an rvalue of type 'int *'
-  int const u = (p + 1);
-            ^   ~~~~~~~
-
diff --git a/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.msl
index 1da1a69..e5c9cac 100644
--- a/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/local/ptr_private.wgsl.expected.ir.msl
@@ -1,17 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* i;
+};
 
-thread int i = 123;
 kernel void tint_symbol() {
-  thread int* const p = i;
-  int const u = (p + 1);
+  thread int i = 123;
+  tint_module_vars_struct const tint_module_vars = {.i=(&i)};
+  thread int* const p = tint_module_vars.i;
+  int const u = ((*p) + 1);
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int i = 123;
-           ^
-program_source:7:13: error: cannot initialize a variable of type 'const int' with an rvalue of type 'int *'
-  int const u = (p + 1);
-            ^   ~~~~~~~
-
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
index 14e76e5..965bab3 100644
--- 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
@@ -1,28 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  a:i32 @offset(0)
+kernel void tint_symbol(device S* v [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.v=v};
+  device int* const p = (&(*tint_module_vars.v).a);
+  int const u = ((*p) + 1);
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %3:ptr<storage, i32, read_write> = access %v, 0u
-    %p:ptr<storage, i32, read_write> = let %3
-    %5:i32 = load %p
-    %6:i32 = add %5, 1i
-    %u:i32 = let %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/local/ptr_uniform.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/local/ptr_uniform.wgsl.expected.ir.msl
index b062550..281ed39 100644
--- 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
@@ -1,28 +1,14 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+};
+struct tint_module_vars_struct {
+  const constant S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  a:i32 @offset(0)
+kernel void tint_symbol(const constant S* v [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.v=v};
+  const constant int* const p = (&(*tint_module_vars.v).a);
+  int const u = ((*p) + 1);
 }
-
-$B1: {  # root
-  %v:ptr<uniform, S, read> = var @binding_point(0, 0)
-}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %3:ptr<uniform, i32, read> = access %v, 0u
-    %p:ptr<uniform, i32, read> = let %3
-    %5:i32 = load %p
-    %6:i32 = add %5, 1i
-    %u:i32 = let %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/function/array_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/function/array_in_struct.wgsl.expected.ir.msl
index 2206f2b..63db61e 100644
--- 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
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -19,70 +17,9 @@
 };
 
 tint_array<int, 4> func(thread tint_array<int, 4>* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
   str F = {};
-  tint_array<int, 4> const r = func(F.arr);
+  tint_array<int, 4> const r = func((&F.arr));
 }
-program_source:20:10: error: no viable conversion from returned value of type 'tint_array<int, 4> *const' to function return type 'tint_array<int, 4>'
-  return pointer;
-         ^~~~~~~
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const tint_array<int, 4> &' for 1st argument; dereference the argument with *
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const tint_array<int, 4> &' for 1st argument; dereference the argument with *
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const tint_array<int, 4> &' for 1st argument; dereference the argument with *
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const device tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const threadgroup tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const constant tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const device tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const threadgroup tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const constant tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const constant tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'device tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'threadgroup tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'device tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'threadgroup tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:24:32: error: no matching function for call to 'func'
-  tint_array<int, 4> const r = func(F.arr);
-                               ^~~~
-program_source:19:20: note: candidate function not viable: no known conversion from 'tint_array<int, 4>' to 'tint_array<int, 4> *const' for 1st argument; take the address of the argument with &
-tint_array<int, 4> func(thread tint_array<int, 4>* const pointer) {
-                   ^
-
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
index 8fde8df..27cb1ff 100644
--- 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
@@ -1,22 +1,10 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 int func(thread int* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
   int F = 0;
-  int const r = func(F);
+  int const r = func((&F));
 }
-program_source:5:10: error: cannot initialize return object of type 'int' with an lvalue of type 'int *const'
-  return pointer;
-         ^~~~~~~
-program_source:9:17: error: no matching function for call to 'func'
-  int const r = func(F);
-                ^~~~
-program_source:4:5: note: candidate function not viable: no known conversion from 'int' to 'int *const' for 1st argument; take the address of the argument with &
-int func(thread int* const pointer) {
-    ^
-
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
index f23c502..aeecff6 100644
--- 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
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct str {
@@ -7,19 +5,9 @@
 };
 
 int func(thread int* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
   str F = {};
-  int const r = func(F.i);
+  int const r = func((&F.i));
 }
-program_source:8:10: error: cannot initialize return object of type 'int' with an lvalue of type 'int *const'
-  return pointer;
-         ^~~~~~~
-program_source:12:17: error: no matching function for call to 'func'
-  int const r = func(F.i);
-                ^~~~
-program_source:7:5: note: candidate function not viable: no known conversion from 'int' to 'int *const' for 1st argument; take the address of the argument with &
-int func(thread int* const pointer) {
-    ^
-
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
index af589aa..424ce33 100644
--- 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
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct str {
@@ -19,70 +17,9 @@
 
 
 str func(thread str* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
   tint_array<str, 4> F = {};
-  str const r = func(F[2]);
+  str const r = func((&F[2]));
 }
-program_source:20:10: error: no viable conversion from returned value of type 'str *const' to function return type 'str'
-  return pointer;
-         ^~~~~~~
-program_source:3:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const str &' for 1st argument; dereference the argument with *
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const str &' for 1st argument; dereference the argument with *
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const str &' for 1st argument; dereference the argument with *
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const device str &' for 1st argument
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const threadgroup str &' for 1st argument
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const constant str &' for 1st argument
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const device str &' for 1st argument
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const threadgroup str &' for 1st argument
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const constant str &' for 1st argument
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const constant str &' for 1st argument
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'str &&' for 1st argument
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'device str &&' for 1st argument
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'threadgroup str &&' for 1st argument
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'str &&' for 1st argument
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'device str &&' for 1st argument
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'threadgroup str &&' for 1st argument
-struct str {
-       ^
-program_source:3:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'str &&' for 1st argument
-struct str {
-       ^
-program_source:24:17: error: no matching function for call to 'func'
-  str const r = func(F[2]);
-                ^~~~
-program_source:19:5: note: candidate function not viable: no known conversion from 'str' to 'str *const' for 1st argument; take the address of the argument with &
-str func(thread str* const pointer) {
-    ^
-
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
index a2b85d0..2efe96d 100644
--- 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
@@ -1,22 +1,10 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 float2 func(thread float2* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
   float2x2 F = float2x2(0.0f);
-  float2 const r = func(F[1]);
+  float2 const r = func((&F[1]));
 }
-program_source:5:10: error: cannot initialize return object of type 'float2' (vector of 2 'float' values) with an lvalue of type 'float2 *const'
-  return pointer;
-         ^~~~~~~
-program_source:9:20: error: no matching function for call to 'func'
-  float2 const r = func(F[1]);
-                   ^~~~
-program_source:4:8: note: candidate function not viable: no known conversion from 'vec<float, 2>' (vector of 2 'float' values) to 'float2 *const' for 1st argument; take the address of the argument with &
-float2 func(thread float2* const pointer) {
-       ^
-
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
index b4e02d6..54b6b9f 100644
--- 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
@@ -1,22 +1,10 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 float4 func(thread float4* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
   float4 F = 0.0f;
-  float4 const r = func(F);
+  float4 const r = func((&F));
 }
-program_source:5:10: error: cannot initialize return object of type 'float4' (vector of 4 'float' values) with an lvalue of type 'float4 *const'
-  return pointer;
-         ^~~~~~~
-program_source:9:20: error: no matching function for call to 'func'
-  float4 const r = func(F);
-                   ^~~~
-program_source:4:8: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'float4 *const' for 1st argument; take the address of the argument with &
-float4 func(thread float4* const pointer) {
-       ^
-
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
index fdb732b..22ed730 100644
--- 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
@@ -1,22 +1,10 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 float4 func(thread float4* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
   float2x4 F = float2x4(0.0f);
-  float4 const r = func(F[1]);
+  float4 const r = func((&F[1]));
 }
-program_source:5:10: error: cannot initialize return object of type 'float4' (vector of 4 'float' values) with an lvalue of type 'float4 *const'
-  return pointer;
-         ^~~~~~~
-program_source:9:20: error: no matching function for call to 'func'
-  float4 const r = func(F[1]);
-                   ^~~~
-program_source:4:8: note: candidate function not viable: no known conversion from 'vec<float, 4>' (vector of 4 'float' values) to 'float4 *const' for 1st argument; take the address of the argument with &
-float4 func(thread float4* const pointer) {
-       ^
-
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
index 40bdda9..61e7278 100644
--- 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
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct str {
@@ -7,19 +5,9 @@
 };
 
 float4 func(thread float4* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
   str F = {};
-  float4 const r = func(F.i);
+  float4 const r = func((&F.i));
 }
-program_source:8:10: error: cannot initialize return object of type 'float4' (vector of 4 'float' values) with an lvalue of type 'float4 *const'
-  return pointer;
-         ^~~~~~~
-program_source:12:20: error: no matching function for call to 'func'
-  float4 const r = func(F.i);
-                   ^~~~
-program_source:7:8: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'float4 *const' for 1st argument; take the address of the argument with &
-float4 func(thread float4* const pointer) {
-       ^
-
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
index bccad69..298deac 100644
--- 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
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -17,72 +15,15 @@
 struct str {
   tint_array<int, 4> arr;
 };
+struct tint_module_vars_struct {
+  thread str* P;
+};
 
-thread str P = {};
 tint_array<int, 4> func(thread tint_array<int, 4>* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
-  tint_array<int, 4> const r = func(P.arr);
+  thread str P = {};
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  tint_array<int, 4> const r = func((&(*tint_module_vars.P).arr));
 }
-program_source:19:12: error: program scope variable must reside in constant address space
-thread str P = {};
-           ^
-program_source:21:10: error: no viable conversion from returned value of type 'tint_array<int, 4> *const' to function return type 'tint_array<int, 4>'
-  return pointer;
-         ^~~~~~~
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const tint_array<int, 4> &' for 1st argument; dereference the argument with *
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const tint_array<int, 4> &' for 1st argument; dereference the argument with *
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const tint_array<int, 4> &' for 1st argument; dereference the argument with *
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const device tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const threadgroup tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const constant tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const device tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const threadgroup tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const constant tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'const constant tint_array<int, 4> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'device tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'threadgroup tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'device tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'threadgroup tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'tint_array<int, 4> *const' to 'tint_array<int, 4> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:24:28: warning: unused variable 'r' [-Wunused-variable]
-  tint_array<int, 4> const r = func(P.arr);
-                           ^
-
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
index 3788448..4030324 100644
--- 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
@@ -1,22 +1,14 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* P;
+};
 
-thread int P = 0;
 int func(thread int* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
-  int const r = func(P);
+  thread int P = 0;
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  int const r = func(tint_module_vars.P);
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int P = 0;
-           ^
-program_source:6:10: error: cannot initialize return object of type 'int' with an lvalue of type 'int *const'
-  return pointer;
-         ^~~~~~~
-program_source:9:13: warning: unused variable 'r' [-Wunused-variable]
-  int const r = func(P);
-            ^
-
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
index 41906b5..c68a38e 100644
--- 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
@@ -1,25 +1,17 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct str {
   int i;
 };
+struct tint_module_vars_struct {
+  thread str* P;
+};
 
-thread str P = {};
 int func(thread int* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
-  int const r = func(P.i);
+  thread str P = {};
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  int const r = func((&(*tint_module_vars.P).i));
 }
-program_source:7:12: error: program scope variable must reside in constant address space
-thread str P = {};
-           ^
-program_source:9:10: error: cannot initialize return object of type 'int' with an lvalue of type 'int *const'
-  return pointer;
-         ^~~~~~~
-program_source:12:13: warning: unused variable 'r' [-Wunused-variable]
-  int const r = func(P.i);
-            ^
-
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
index 808d5b3..39f93db 100644
--- 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
@@ -1,7 +1,8 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct str {
+  int i;
+};
 template<typename T, size_t N>
 struct tint_array {
   const constant T& operator[](size_t i) const constant { return elements[i]; }
@@ -14,75 +15,15 @@
   T elements[N];
 };
 
-struct str {
-  int i;
+struct tint_module_vars_struct {
+  thread tint_array<str, 4>* P;
 };
 
-thread tint_array<str, 4> P = {};
 str func(thread str* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
-  str const r = func(P[2]);
+  thread tint_array<str, 4> P = {};
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  str const r = func((&(*tint_module_vars.P)[2]));
 }
-program_source:19:27: error: program scope variable must reside in constant address space
-thread tint_array<str, 4> P = {};
-                          ^
-program_source:21:10: error: no viable conversion from returned value of type 'str *const' to function return type 'str'
-  return pointer;
-         ^~~~~~~
-program_source:15:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const str &' for 1st argument; dereference the argument with *
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const str &' for 1st argument; dereference the argument with *
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const str &' for 1st argument; dereference the argument with *
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const device str &' for 1st argument
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const threadgroup str &' for 1st argument
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const constant str &' for 1st argument
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const device str &' for 1st argument
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const threadgroup str &' for 1st argument
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const constant str &' for 1st argument
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'str *const' to 'const constant str &' for 1st argument
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'str &&' for 1st argument
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'device str &&' for 1st argument
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'threadgroup str &&' for 1st argument
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'str &&' for 1st argument
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'device str &&' for 1st argument
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'threadgroup str &&' for 1st argument
-struct str {
-       ^
-program_source:15:8: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'str *const' to 'str &&' for 1st argument
-struct str {
-       ^
-program_source:24:13: warning: unused variable 'r' [-Wunused-variable]
-  str const r = func(P[2]);
-            ^
-
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
index 27f0a3c..4ebd764 100644
--- 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
@@ -1,22 +1,14 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x2* P;
+};
 
-thread float2x2 P = float2x2(0.0f);
 float2 func(thread float2* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
-  float2 const r = func(P[1]);
+  thread float2x2 P = float2x2(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  float2 const r = func((&(*tint_module_vars.P)[1]));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float2x2 P = float2x2(0.0f);
-                ^
-program_source:6:10: error: cannot initialize return object of type 'float2' (vector of 2 'float' values) with an lvalue of type 'float2 *const'
-  return pointer;
-         ^~~~~~~
-program_source:9:16: warning: unused variable 'r' [-Wunused-variable]
-  float2 const r = func(P[1]);
-               ^
-
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
index f709c6a..aec9649 100644
--- 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
@@ -1,22 +1,14 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float4* P;
+};
 
-thread float4 P = 0.0f;
 float4 func(thread float4* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
-  float4 const r = func(P);
+  thread float4 P = 0.0f;
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  float4 const r = func(tint_module_vars.P);
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float4 P = 0.0f;
-              ^
-program_source:6:10: error: cannot initialize return object of type 'float4' (vector of 4 'float' values) with an lvalue of type 'float4 *const'
-  return pointer;
-         ^~~~~~~
-program_source:9:16: warning: unused variable 'r' [-Wunused-variable]
-  float4 const r = func(P);
-               ^
-
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
index 69bce59..676b6ec 100644
--- 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
@@ -1,22 +1,14 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x4* P;
+};
 
-thread float2x4 P = float2x4(0.0f);
 float4 func(thread float4* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
-  float4 const r = func(P[1]);
+  thread float2x4 P = float2x4(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  float4 const r = func((&(*tint_module_vars.P)[1]));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float2x4 P = float2x4(0.0f);
-                ^
-program_source:6:10: error: cannot initialize return object of type 'float4' (vector of 4 'float' values) with an lvalue of type 'float4 *const'
-  return pointer;
-         ^~~~~~~
-program_source:9:16: warning: unused variable 'r' [-Wunused-variable]
-  float4 const r = func(P[1]);
-               ^
-
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
index 0e67ae3..19ff6e7 100644
--- 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
@@ -1,25 +1,17 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct str {
   float4 i;
 };
+struct tint_module_vars_struct {
+  thread str* P;
+};
 
-thread str P = {};
 float4 func(thread float4* const pointer) {
-  return pointer;
+  return (*pointer);
 }
 kernel void tint_symbol() {
-  float4 const r = func(P.i);
+  thread str P = {};
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  float4 const r = func((&(*tint_module_vars.P).i));
 }
-program_source:7:12: error: program scope variable must reside in constant address space
-thread str P = {};
-           ^
-program_source:9:10: error: cannot initialize return object of type 'float4' (vector of 4 'float' values) with an lvalue of type 'float4 *const'
-  return pointer;
-         ^~~~~~~
-program_source:12:16: warning: unused variable 'r' [-Wunused-variable]
-  float4 const r = func(P.i);
-               ^
-
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
index fe78d03..4e5d45e 100644
--- a/test/tint/ptr_ref/load/param/ptr.spvasm.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/ptr.spvasm.expected.ir.msl
@@ -1,28 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 int func(int value, thread int* const pointer) {
-  int const x_9 = pointer;
+  int const x_9 = (*pointer);
   return (value + x_9);
 }
 void main_1() {
   int i = 0;
   i = 123;
   int const x_19 = i;
-  int const x_18 = func(x_19, i);
+  int const x_18 = func(x_19, (&i));
 }
 kernel void tint_symbol() {
   main_1();
 }
-program_source:5:13: error: cannot initialize a variable of type 'const int' with an lvalue of type 'int *const'
-  int const x_9 = pointer;
-            ^     ~~~~~~~
-program_source:12:20: error: no matching function for call to 'func'
-  int const x_18 = func(x_19, i);
-                   ^~~~
-program_source:4:5: note: candidate function not viable: no known conversion from 'int' to 'int *const' for 2nd argument; take the address of the argument with &
-int func(int value, thread int* const pointer) {
-    ^
-
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
index 6d16285..6b500df 100644
--- a/test/tint/ptr_ref/load/param/ptr.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/load/param/ptr.wgsl.expected.ir.msl
@@ -1,22 +1,10 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 int func(int value, thread int* const pointer) {
-  return (value + pointer);
+  return (value + (*pointer));
 }
 kernel void tint_symbol() {
   int i = 123;
-  int const r = func(i, i);
+  int const r = func(i, (&i));
 }
-program_source:5:10: error: cannot initialize return object of type 'int' with an rvalue of type 'int *'
-  return (value + pointer);
-         ^~~~~~~~~~~~~~~~~
-program_source:9:17: error: no matching function for call to 'func'
-  int const r = func(i, i);
-                ^~~~
-program_source:4:5: note: candidate function not viable: no known conversion from 'int' to 'int *const' for 2nd argument; take the address of the argument with &
-int func(int value, thread int* const pointer) {
-    ^
-
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
index 6472c06..4cb3626 100644
--- 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
@@ -1,32 +1,28 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: str = struct @align(4) {
-  arr:array<i32, 4> @offset(0)
-}
+struct str {
+  tint_array<int, 4> arr;
+};
+struct tint_module_vars_struct {
+  const device str* S;
+};
 
-$B1: {  # root
-  %S:ptr<storage, str, read> = var @binding_point(0, 0)
+tint_array<int, 4> func(const device tint_array<int, 4>* const pointer) {
+  return (*pointer);
 }
-
-%func = func(%pointer:ptr<storage, array<i32, 4>, read>):array<i32, 4> {
-  $B2: {
-    %4:array<i32, 4> = load %pointer
-    ret %4
-  }
+kernel void tint_symbol(const device str* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_array<int, 4> const r = func((&(*tint_module_vars.S).arr));
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:ptr<storage, array<i32, 4>, read> = access %S, 0u
-    %7:array<i32, 4> = call %func, %6
-    %r:array<i32, 4> = let %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/ptr_ref/load/param/storage/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/i32.wgsl.expected.ir.msl
index b8fa44a..3441b21 100644
--- 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
@@ -1,27 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device int* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %S:ptr<storage, i32, read> = var @binding_point(0, 0)
+int func(const device int* const pointer) {
+  return (*pointer);
 }
-
-%func = func(%pointer:ptr<storage, i32, read>):i32 {
-  $B2: {
-    %4:i32 = load %pointer
-    ret %4
-  }
+kernel void tint_symbol(const device int* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  int const r = func(tint_module_vars.S);
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:i32 = call %func, %S
-    %r:i32 = let %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_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/i32_in_struct.wgsl.expected.ir.msl
index 0593dcd..161ea8ec 100644
--- 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
@@ -1,32 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct str {
+  int i;
+};
+struct tint_module_vars_struct {
+  const device str* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: str = struct @align(4) {
-  i:i32 @offset(0)
+int func(const device int* const pointer) {
+  return (*pointer);
 }
-
-$B1: {  # root
-  %S:ptr<storage, str, read> = var @binding_point(0, 0)
+kernel void tint_symbol(const device str* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  int const r = func((&(*tint_module_vars.S).i));
 }
-
-%func = func(%pointer:ptr<storage, i32, read>):i32 {
-  $B2: {
-    %4:i32 = load %pointer
-    ret %4
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:ptr<storage, i32, read> = access %S, 0u
-    %7:i32 = call %func, %6
-    %r:i32 = let %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/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
index 3004ce1..48224ae 100644
--- 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
@@ -1,32 +1,28 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct str {
+  int i;
+};
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: str = struct @align(4) {
-  i:i32 @offset(0)
-}
+struct tint_module_vars_struct {
+  const device tint_array<str, 4>* S;
+};
 
-$B1: {  # root
-  %S:ptr<storage, array<str, 4>, read> = var @binding_point(0, 0)
+str func(const device str* const pointer) {
+  return (*pointer);
 }
-
-%func = func(%pointer:ptr<storage, str, read>):str {
-  $B2: {
-    %4:str = load %pointer
-    ret %4
-  }
+kernel void tint_symbol(const device tint_array<str, 4>* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  str const r = func((&(*tint_module_vars.S)[2]));
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:ptr<storage, str, read> = access %S, 2i
-    %7:str = call %func, %6
-    %r:str = let %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/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
index 982f9f0..053c395 100644
--- 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
@@ -1,28 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float2x2* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %S:ptr<storage, mat2x2<f32>, read> = var @binding_point(0, 0)
+float2 func(const device float2* const pointer) {
+  return (*pointer);
 }
-
-%func = func(%pointer:ptr<storage, vec2<f32>, read>):vec2<f32> {
-  $B2: {
-    %4:vec2<f32> = load %pointer
-    ret %4
-  }
+kernel void tint_symbol(const device float2x2* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  float2 const r = func((&(*tint_module_vars.S)[1]));
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:ptr<storage, vec2<f32>, read> = access %S, 1i
-    %7:vec2<f32> = call %func, %6
-    %r:vec2<f32> = let %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/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
index 8a1a501..73a59a6 100644
--- 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
@@ -1,27 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float4* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %S:ptr<storage, vec4<f32>, read> = var @binding_point(0, 0)
+float4 func(const device float4* const pointer) {
+  return (*pointer);
 }
-
-%func = func(%pointer:ptr<storage, vec4<f32>, read>):vec4<f32> {
-  $B2: {
-    %4:vec4<f32> = load %pointer
-    ret %4
-  }
+kernel void tint_symbol(const device float4* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  float4 const r = func(tint_module_vars.S);
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:vec4<f32> = call %func, %S
-    %r:vec4<f32> = let %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_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/storage/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
index 84f0808..b81ae3b 100644
--- 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
@@ -1,28 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const device float2x4* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %S:ptr<storage, mat2x4<f32>, read> = var @binding_point(0, 0)
+float4 func(const device float4* const pointer) {
+  return (*pointer);
 }
-
-%func = func(%pointer:ptr<storage, vec4<f32>, read>):vec4<f32> {
-  $B2: {
-    %4:vec4<f32> = load %pointer
-    ret %4
-  }
+kernel void tint_symbol(const device float2x4* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  float4 const r = func((&(*tint_module_vars.S)[1]));
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:ptr<storage, vec4<f32>, read> = access %S, 1i
-    %7:vec4<f32> = call %func, %6
-    %r:vec4<f32> = let %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/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
index cada6c2..924b036 100644
--- 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
@@ -1,32 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct str {
+  float4 i;
+};
+struct tint_module_vars_struct {
+  const device str* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: str = struct @align(16) {
-  i:vec4<f32> @offset(0)
+float4 func(const device float4* const pointer) {
+  return (*pointer);
 }
-
-$B1: {  # root
-  %S:ptr<storage, str, read> = var @binding_point(0, 0)
+kernel void tint_symbol(const device str* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  float4 const r = func((&(*tint_module_vars.S).i));
 }
-
-%func = func(%pointer:ptr<storage, vec4<f32>, read>):vec4<f32> {
-  $B2: {
-    %4:vec4<f32> = load %pointer
-    ret %4
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:ptr<storage, vec4<f32>, read> = access %S, 0u
-    %7:vec4<f32> = call %func, %6
-    %r:vec4<f32> = let %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/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
index 6218623..b70d640 100644
--- 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
@@ -1,32 +1,28 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: str = struct @align(16) {
-  arr:array<vec4<i32>, 4> @offset(0)
-}
+struct str {
+  tint_array<int4, 4> arr;
+};
+struct tint_module_vars_struct {
+  const constant str* S;
+};
 
-$B1: {  # root
-  %S:ptr<uniform, str, read> = var @binding_point(0, 0)
+tint_array<int4, 4> func(const constant tint_array<int4, 4>* const pointer) {
+  return (*pointer);
 }
-
-%func = func(%pointer:ptr<uniform, array<vec4<i32>, 4>, read>):array<vec4<i32>, 4> {
-  $B2: {
-    %4:array<vec4<i32>, 4> = load %pointer
-    ret %4
-  }
+kernel void tint_symbol(const constant str* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  tint_array<int4, 4> const r = func((&(*tint_module_vars.S).arr));
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:ptr<uniform, array<vec4<i32>, 4>, read> = access %S, 0u
-    %7:array<vec4<i32>, 4> = call %func, %6
-    %r:array<vec4<i32>, 4> = let %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/ptr_ref/load/param/uniform/i32.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/i32.wgsl.expected.ir.msl
index 2a0a0992..3960789 100644
--- 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
@@ -1,27 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant int* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %S:ptr<uniform, i32, read> = var @binding_point(0, 0)
+int func(const constant int* const pointer) {
+  return (*pointer);
 }
-
-%func = func(%pointer:ptr<uniform, i32, read>):i32 {
-  $B2: {
-    %4:i32 = load %pointer
-    ret %4
-  }
+kernel void tint_symbol(const constant int* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  int const r = func(tint_module_vars.S);
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:i32 = call %func, %S
-    %r:i32 = let %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_in_struct.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/i32_in_struct.wgsl.expected.ir.msl
index d3cb467..8401c5a 100644
--- 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
@@ -1,32 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct str {
+  int i;
+};
+struct tint_module_vars_struct {
+  const constant str* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: str = struct @align(4) {
-  i:i32 @offset(0)
+int func(const constant int* const pointer) {
+  return (*pointer);
 }
-
-$B1: {  # root
-  %S:ptr<uniform, str, read> = var @binding_point(0, 0)
+kernel void tint_symbol(const constant str* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  int const r = func((&(*tint_module_vars.S).i));
 }
-
-%func = func(%pointer:ptr<uniform, i32, read>):i32 {
-  $B2: {
-    %4:i32 = load %pointer
-    ret %4
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:ptr<uniform, i32, read> = access %S, 0u
-    %7:i32 = call %func, %6
-    %r:i32 = let %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/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
index e70fe7d..ae82463 100644
--- 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
@@ -1,32 +1,28 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct str {
+  int4 i;
+};
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: str = struct @align(16) {
-  i:vec4<i32> @offset(0)
-}
+struct tint_module_vars_struct {
+  const constant tint_array<str, 4>* S;
+};
 
-$B1: {  # root
-  %S:ptr<uniform, array<str, 4>, read> = var @binding_point(0, 0)
+str func(const constant str* const pointer) {
+  return (*pointer);
 }
-
-%func = func(%pointer:ptr<uniform, str, read>):str {
-  $B2: {
-    %4:str = load %pointer
-    ret %4
-  }
+kernel void tint_symbol(const constant tint_array<str, 4>* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  str const r = func((&(*tint_module_vars.S)[2]));
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:ptr<uniform, str, read> = access %S, 2i
-    %7:str = call %func, %6
-    %r:str = let %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/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
index 7b92425..bfa4dcf 100644
--- 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
@@ -1,28 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x2* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %S:ptr<uniform, mat2x2<f32>, read> = var @binding_point(0, 0)
+float2 func(const constant float2* const pointer) {
+  return (*pointer);
 }
-
-%func = func(%pointer:ptr<uniform, vec2<f32>, read>):vec2<f32> {
-  $B2: {
-    %4:vec2<f32> = load %pointer
-    ret %4
-  }
+kernel void tint_symbol(const constant float2x2* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  float2 const r = func((&(*tint_module_vars.S)[1]));
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:ptr<uniform, vec2<f32>, read> = access %S, 1i
-    %7:vec2<f32> = call %func, %6
-    %r:vec2<f32> = let %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/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
index 499fa01..e720076 100644
--- 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
@@ -1,27 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float4* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %S:ptr<uniform, vec4<f32>, read> = var @binding_point(0, 0)
+float4 func(const constant float4* const pointer) {
+  return (*pointer);
 }
-
-%func = func(%pointer:ptr<uniform, vec4<f32>, read>):vec4<f32> {
-  $B2: {
-    %4:vec4<f32> = load %pointer
-    ret %4
-  }
+kernel void tint_symbol(const constant float4* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  float4 const r = func(tint_module_vars.S);
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:vec4<f32> = call %func, %S
-    %r:vec4<f32> = let %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_mat2x4.wgsl.expected.ir.msl b/test/tint/ptr_ref/load/param/uniform/vec4_f32_in_mat2x4.wgsl.expected.ir.msl
index 4edcc1e..91233de 100644
--- 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
@@ -1,28 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2x4* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %S:ptr<uniform, mat2x4<f32>, read> = var @binding_point(0, 0)
+float4 func(const constant float4* const pointer) {
+  return (*pointer);
 }
-
-%func = func(%pointer:ptr<uniform, vec4<f32>, read>):vec4<f32> {
-  $B2: {
-    %4:vec4<f32> = load %pointer
-    ret %4
-  }
+kernel void tint_symbol(const constant float2x4* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  float4 const r = func((&(*tint_module_vars.S)[1]));
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:ptr<uniform, vec4<f32>, read> = access %S, 1i
-    %7:vec4<f32> = call %func, %6
-    %r:vec4<f32> = let %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/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
index eb30111..62f4c4e 100644
--- 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
@@ -1,32 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct str {
+  float4 i;
+};
+struct tint_module_vars_struct {
+  const constant str* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: str = struct @align(16) {
-  i:vec4<f32> @offset(0)
+float4 func(const constant float4* const pointer) {
+  return (*pointer);
 }
-
-$B1: {  # root
-  %S:ptr<uniform, str, read> = var @binding_point(0, 0)
+kernel void tint_symbol(const constant str* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  float4 const r = func((&(*tint_module_vars.S).i));
 }
-
-%func = func(%pointer:ptr<uniform, vec4<f32>, read>):vec4<f32> {
-  $B2: {
-    %4:vec4<f32> = load %pointer
-    ret %4
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:ptr<uniform, vec4<f32>, read> = access %S, 0u
-    %7:vec4<f32> = call %func, %6
-    %r:vec4<f32> = let %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/ptr_ref/store/global/i32.spvasm.expected.ir.msl b/test/tint/ptr_ref/store/global/i32.spvasm.expected.ir.msl
index 9549b00..add96d4 100644
--- a/test/tint/ptr_ref/store/global/i32.spvasm.expected.ir.msl
+++ b/test/tint/ptr_ref/store/global/i32.spvasm.expected.ir.msl
@@ -1,17 +1,15 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* I;
+};
 
-thread int I = 0;
-void main_1() {
-  I = 123;
-  I = 123;
+void main_1(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.I) = 123;
+  (*tint_module_vars.I) = 123;
 }
 kernel void tint_symbol() {
-  main_1();
+  thread int I = 0;
+  tint_module_vars_struct const tint_module_vars = {.I=(&I)};
+  main_1(tint_module_vars);
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int I = 0;
-           ^
-
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
index 77f0be6..b1b1710 100644
--- a/test/tint/ptr_ref/store/global/i32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/global/i32.wgsl.expected.ir.msl
@@ -1,14 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* I;
+};
 
-thread int I = 0;
 kernel void tint_symbol() {
-  I = 123;
-  I = 123;
+  thread int I = 0;
+  tint_module_vars_struct const tint_module_vars = {.I=(&I)};
+  (*tint_module_vars.I) = 123;
+  (*tint_module_vars.I) = 123;
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int I = 0;
-           ^
-
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
index deec3d5..cff29e8 100644
--- 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
@@ -1,19 +1,17 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct S {
   int i;
 };
+struct tint_module_vars_struct {
+  thread S* V;
+};
 
-thread S V = {};
-void main_1() {
-  V.i = 5;
+void main_1(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.V).i = 5;
 }
 kernel void tint_symbol() {
-  main_1();
+  thread S V = {};
+  tint_module_vars_struct const tint_module_vars = {.V=(&V)};
+  main_1(tint_module_vars);
 }
-program_source:7:10: error: program scope variable must reside in constant address space
-thread S V = {};
-         ^
-
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
index aa60be5..86d7b9e 100644
--- a/test/tint/ptr_ref/store/local/i32.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/local/i32.wgsl.expected.ir.msl
@@ -1,27 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 kernel void tint_symbol() {
   int i = 123;
-  thread int* const p = i;
-  p = 123;
-  p = 123;
+  thread int* const p = (&i);
+  (*p) = 123;
+  (*p) = 123;
 }
-program_source:6:21: error: cannot initialize a variable of type 'int *const' with an lvalue of type 'int'
-  thread int* const p = i;
-                    ^   ~
-program_source:7:5: error: cannot assign to variable 'p' with const-qualified type 'int *const'
-  p = 123;
-  ~ ^
-program_source:6:21: note: variable 'p' declared const here
-  thread int* const p = i;
-  ~~~~~~~~~~~~~~~~~~^~~~~
-program_source:8:5: error: cannot assign to variable 'p' with const-qualified type 'int *const'
-  p = 123;
-  ~ ^
-program_source:6:21: note: variable 'p' declared const here
-  thread int* const p = i;
-  ~~~~~~~~~~~~~~~~~~^~~~~
-
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
index 5af32c9..5a7857b 100644
--- 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
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -19,22 +17,9 @@
 };
 
 void func(thread tint_array<int, 4>* const pointer) {
-  pointer = tint_array<int, 4>{};
+  (*pointer) = tint_array<int, 4>{};
 }
 kernel void tint_symbol() {
   str F = {};
-  func(F.arr);
+  func((&F.arr));
 }
-program_source:20:11: error: cannot assign to variable 'pointer' with const-qualified type 'tint_array<int, 4> *const'
-  pointer = tint_array<int, 4>{};
-  ~~~~~~~ ^
-program_source:19:44: note: variable 'pointer' declared const here
-void func(thread tint_array<int, 4>* const pointer) {
-          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-program_source:24:3: error: no matching function for call to 'func'
-  func(F.arr);
-  ^~~~
-program_source:19:6: note: candidate function not viable: no known conversion from 'tint_array<int, 4>' to 'tint_array<int, 4> *const' for 1st argument; take the address of the argument with &
-void func(thread tint_array<int, 4>* const pointer) {
-     ^
-
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
index 55fb76d..a584ab3 100644
--- 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
@@ -1,25 +1,10 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 void func(thread int* const pointer) {
-  pointer = 42;
+  (*pointer) = 42;
 }
 kernel void tint_symbol() {
   int F = 0;
-  func(F);
+  func((&F));
 }
-program_source:5:11: error: cannot assign to variable 'pointer' with const-qualified type 'int *const'
-  pointer = 42;
-  ~~~~~~~ ^
-program_source:4:29: note: variable 'pointer' declared const here
-void func(thread int* const pointer) {
-          ~~~~~~~~~~~~~~~~~~^~~~~~~
-program_source:9:3: error: no matching function for call to 'func'
-  func(F);
-  ^~~~
-program_source:4:6: note: candidate function not viable: no known conversion from 'int' to 'int *const' for 1st argument; take the address of the argument with &
-void func(thread int* const pointer) {
-     ^
-
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
index 8fc6fb2..c5144fc 100644
--- 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
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct str {
@@ -7,22 +5,9 @@
 };
 
 void func(thread int* const pointer) {
-  pointer = 42;
+  (*pointer) = 42;
 }
 kernel void tint_symbol() {
   str F = {};
-  func(F.i);
+  func((&F.i));
 }
-program_source:8:11: error: cannot assign to variable 'pointer' with const-qualified type 'int *const'
-  pointer = 42;
-  ~~~~~~~ ^
-program_source:7:29: note: variable 'pointer' declared const here
-void func(thread int* const pointer) {
-          ~~~~~~~~~~~~~~~~~~^~~~~~~
-program_source:12:3: error: no matching function for call to 'func'
-  func(F.i);
-  ^~~~
-program_source:7:6: note: candidate function not viable: no known conversion from 'int' to 'int *const' for 1st argument; take the address of the argument with &
-void func(thread int* const pointer) {
-     ^
-
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
index 99bf128..6a0ada1 100644
--- 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
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct str {
@@ -19,22 +17,9 @@
 
 
 void func(thread str* const pointer) {
-  pointer = str{};
+  (*pointer) = str{};
 }
 kernel void tint_symbol() {
   tint_array<str, 4> F = {};
-  func(F[2]);
+  func((&F[2]));
 }
-program_source:20:11: error: cannot assign to variable 'pointer' with const-qualified type 'str *const'
-  pointer = str{};
-  ~~~~~~~ ^
-program_source:19:29: note: variable 'pointer' declared const here
-void func(thread str* const pointer) {
-          ~~~~~~~~~~~~~~~~~~^~~~~~~
-program_source:24:3: error: no matching function for call to 'func'
-  func(F[2]);
-  ^~~~
-program_source:19:6: note: candidate function not viable: no known conversion from 'str' to 'str *const' for 1st argument; take the address of the argument with &
-void func(thread str* const pointer) {
-     ^
-
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
index d099190..623e6cd 100644
--- 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
@@ -1,25 +1,10 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 void func(thread float2* const pointer) {
-  pointer = float2(0.0f);
+  (*pointer) = float2(0.0f);
 }
 kernel void tint_symbol() {
   float2x2 F = float2x2(0.0f);
-  func(F[1]);
+  func((&F[1]));
 }
-program_source:5:11: error: cannot assign to variable 'pointer' with const-qualified type 'float2 *const'
-  pointer = float2(0.0f);
-  ~~~~~~~ ^
-program_source:4:32: note: variable 'pointer' declared const here
-void func(thread float2* const pointer) {
-          ~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-program_source:9:3: error: no matching function for call to 'func'
-  func(F[1]);
-  ^~~~
-program_source:4:6: note: candidate function not viable: no known conversion from 'vec<float, 2>' (vector of 2 'float' values) to 'float2 *const' for 1st argument; take the address of the argument with &
-void func(thread float2* const pointer) {
-     ^
-
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
index 9d13429..d03bb24 100644
--- 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
@@ -1,25 +1,10 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 void func(thread float4* const pointer) {
-  pointer = float4(0.0f);
+  (*pointer) = float4(0.0f);
 }
 kernel void tint_symbol() {
   float4 F = 0.0f;
-  func(F);
+  func((&F));
 }
-program_source:5:11: error: cannot assign to variable 'pointer' with const-qualified type 'float4 *const'
-  pointer = float4(0.0f);
-  ~~~~~~~ ^
-program_source:4:32: note: variable 'pointer' declared const here
-void func(thread float4* const pointer) {
-          ~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-program_source:9:3: error: no matching function for call to 'func'
-  func(F);
-  ^~~~
-program_source:4:6: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'float4 *const' for 1st argument; take the address of the argument with &
-void func(thread float4* const pointer) {
-     ^
-
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
index 7769f44..036323c 100644
--- 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
@@ -1,25 +1,10 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 void func(thread float4* const pointer) {
-  pointer = float4(0.0f);
+  (*pointer) = float4(0.0f);
 }
 kernel void tint_symbol() {
   float2x4 F = float2x4(0.0f);
-  func(F[1]);
+  func((&F[1]));
 }
-program_source:5:11: error: cannot assign to variable 'pointer' with const-qualified type 'float4 *const'
-  pointer = float4(0.0f);
-  ~~~~~~~ ^
-program_source:4:32: note: variable 'pointer' declared const here
-void func(thread float4* const pointer) {
-          ~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-program_source:9:3: error: no matching function for call to 'func'
-  func(F[1]);
-  ^~~~
-program_source:4:6: note: candidate function not viable: no known conversion from 'vec<float, 4>' (vector of 4 'float' values) to 'float4 *const' for 1st argument; take the address of the argument with &
-void func(thread float4* const pointer) {
-     ^
-
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
index 52ece14..eac3dd7 100644
--- 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
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct str {
@@ -7,22 +5,9 @@
 };
 
 void func(thread float4* const pointer) {
-  pointer = float4(0.0f);
+  (*pointer) = float4(0.0f);
 }
 kernel void tint_symbol() {
   str F = {};
-  func(F.i);
+  func((&F.i));
 }
-program_source:8:11: error: cannot assign to variable 'pointer' with const-qualified type 'float4 *const'
-  pointer = float4(0.0f);
-  ~~~~~~~ ^
-program_source:7:32: note: variable 'pointer' declared const here
-void func(thread float4* const pointer) {
-          ~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-program_source:12:3: error: no matching function for call to 'func'
-  func(F.i);
-  ^~~~
-program_source:7:6: note: candidate function not viable: no known conversion from 'float4' (vector of 4 'float' values) to 'float4 *const' for 1st argument; take the address of the argument with &
-void func(thread float4* const pointer) {
-     ^
-
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
index 65761d4..9e8c420 100644
--- 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
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -17,21 +15,15 @@
 struct str {
   tint_array<int, 4> arr;
 };
+struct tint_module_vars_struct {
+  thread str* P;
+};
 
-thread str P = {};
 void func(thread tint_array<int, 4>* const pointer) {
-  pointer = tint_array<int, 4>{};
+  (*pointer) = tint_array<int, 4>{};
 }
 kernel void tint_symbol() {
-  func(P.arr);
+  thread str P = {};
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  func((&(*tint_module_vars.P).arr));
 }
-program_source:19:12: error: program scope variable must reside in constant address space
-thread str P = {};
-           ^
-program_source:21:11: error: cannot assign to variable 'pointer' with const-qualified type 'tint_array<int, 4> *const'
-  pointer = tint_array<int, 4>{};
-  ~~~~~~~ ^
-program_source:20:44: note: variable 'pointer' declared const here
-void func(thread tint_array<int, 4>* const pointer) {
-          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-
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
index cd72298..ec44ab2 100644
--- 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
@@ -1,22 +1,14 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* P;
+};
 
-thread int P = 0;
 void func(thread int* const pointer) {
-  pointer = 42;
+  (*pointer) = 42;
 }
 kernel void tint_symbol() {
-  func(P);
+  thread int P = 0;
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  func(tint_module_vars.P);
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int P = 0;
-           ^
-program_source:6:11: error: cannot assign to variable 'pointer' with const-qualified type 'int *const'
-  pointer = 42;
-  ~~~~~~~ ^
-program_source:5:29: note: variable 'pointer' declared const here
-void func(thread int* const pointer) {
-          ~~~~~~~~~~~~~~~~~~^~~~~~~
-
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
index b158e1e..a1df1d8 100644
--- 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
@@ -1,25 +1,17 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct str {
   int i;
 };
+struct tint_module_vars_struct {
+  thread str* P;
+};
 
-thread str P = {};
 void func(thread int* const pointer) {
-  pointer = 42;
+  (*pointer) = 42;
 }
 kernel void tint_symbol() {
-  func(P.i);
+  thread str P = {};
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  func((&(*tint_module_vars.P).i));
 }
-program_source:7:12: error: program scope variable must reside in constant address space
-thread str P = {};
-           ^
-program_source:9:11: error: cannot assign to variable 'pointer' with const-qualified type 'int *const'
-  pointer = 42;
-  ~~~~~~~ ^
-program_source:8:29: note: variable 'pointer' declared const here
-void func(thread int* const pointer) {
-          ~~~~~~~~~~~~~~~~~~^~~~~~~
-
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
index 1a51d5d..3472ccb 100644
--- 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
@@ -1,7 +1,8 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct str {
+  int i;
+};
 template<typename T, size_t N>
 struct tint_array {
   const constant T& operator[](size_t i) const constant { return elements[i]; }
@@ -14,24 +15,15 @@
   T elements[N];
 };
 
-struct str {
-  int i;
+struct tint_module_vars_struct {
+  thread tint_array<str, 4>* P;
 };
 
-thread tint_array<str, 4> P = {};
 void func(thread str* const pointer) {
-  pointer = str{};
+  (*pointer) = str{};
 }
 kernel void tint_symbol() {
-  func(P[2]);
+  thread tint_array<str, 4> P = {};
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  func((&(*tint_module_vars.P)[2]));
 }
-program_source:19:27: error: program scope variable must reside in constant address space
-thread tint_array<str, 4> P = {};
-                          ^
-program_source:21:11: error: cannot assign to variable 'pointer' with const-qualified type 'str *const'
-  pointer = str{};
-  ~~~~~~~ ^
-program_source:20:29: note: variable 'pointer' declared const here
-void func(thread str* const pointer) {
-          ~~~~~~~~~~~~~~~~~~^~~~~~~
-
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
index 4489f35..eebd3ba 100644
--- 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
@@ -1,22 +1,14 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x2* P;
+};
 
-thread float2x2 P = float2x2(0.0f);
 void func(thread float2* const pointer) {
-  pointer = float2(0.0f);
+  (*pointer) = float2(0.0f);
 }
 kernel void tint_symbol() {
-  func(P[1]);
+  thread float2x2 P = float2x2(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  func((&(*tint_module_vars.P)[1]));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float2x2 P = float2x2(0.0f);
-                ^
-program_source:6:11: error: cannot assign to variable 'pointer' with const-qualified type 'float2 *const'
-  pointer = float2(0.0f);
-  ~~~~~~~ ^
-program_source:5:32: note: variable 'pointer' declared const here
-void func(thread float2* const pointer) {
-          ~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-
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
index 4f1b1bd..2c270c6 100644
--- 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
@@ -1,22 +1,14 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float4* P;
+};
 
-thread float4 P = 0.0f;
 void func(thread float4* const pointer) {
-  pointer = float4(0.0f);
+  (*pointer) = float4(0.0f);
 }
 kernel void tint_symbol() {
-  func(P);
+  thread float4 P = 0.0f;
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  func(tint_module_vars.P);
 }
-program_source:4:15: error: program scope variable must reside in constant address space
-thread float4 P = 0.0f;
-              ^
-program_source:6:11: error: cannot assign to variable 'pointer' with const-qualified type 'float4 *const'
-  pointer = float4(0.0f);
-  ~~~~~~~ ^
-program_source:5:32: note: variable 'pointer' declared const here
-void func(thread float4* const pointer) {
-          ~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-
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
index 3c1285d..e9223b4 100644
--- 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
@@ -1,22 +1,14 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x4* P;
+};
 
-thread float2x4 P = float2x4(0.0f);
 void func(thread float4* const pointer) {
-  pointer = float4(0.0f);
+  (*pointer) = float4(0.0f);
 }
 kernel void tint_symbol() {
-  func(P[1]);
+  thread float2x4 P = float2x4(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  func((&(*tint_module_vars.P)[1]));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float2x4 P = float2x4(0.0f);
-                ^
-program_source:6:11: error: cannot assign to variable 'pointer' with const-qualified type 'float4 *const'
-  pointer = float4(0.0f);
-  ~~~~~~~ ^
-program_source:5:32: note: variable 'pointer' declared const here
-void func(thread float4* const pointer) {
-          ~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-
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
index 6e2e7f8..3428f6d 100644
--- 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
@@ -1,25 +1,17 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct str {
   float4 i;
 };
+struct tint_module_vars_struct {
+  thread str* P;
+};
 
-thread str P = {};
 void func(thread float4* const pointer) {
-  pointer = float4(0.0f);
+  (*pointer) = float4(0.0f);
 }
 kernel void tint_symbol() {
-  func(P.i);
+  thread str P = {};
+  tint_module_vars_struct const tint_module_vars = {.P=(&P)};
+  func((&(*tint_module_vars.P).i));
 }
-program_source:7:12: error: program scope variable must reside in constant address space
-thread str P = {};
-           ^
-program_source:9:11: error: cannot assign to variable 'pointer' with const-qualified type 'float4 *const'
-  pointer = float4(0.0f);
-  ~~~~~~~ ^
-program_source:8:32: note: variable 'pointer' declared const here
-void func(thread float4* const pointer) {
-          ~~~~~~~~~~~~~~~~~~~~~^~~~~~~
-
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
index d91d1cd..d215d75 100644
--- a/test/tint/ptr_ref/store/param/ptr.wgsl.expected.ir.msl
+++ b/test/tint/ptr_ref/store/param/ptr.wgsl.expected.ir.msl
@@ -1,25 +1,10 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 void func(int value, thread int* const pointer) {
-  pointer = value;
+  (*pointer) = value;
 }
 kernel void tint_symbol() {
   int i = 123;
-  func(123, i);
+  func(123, (&i));
 }
-program_source:5:11: error: cannot assign to variable 'pointer' with const-qualified type 'int *const'
-  pointer = value;
-  ~~~~~~~ ^
-program_source:4:40: note: variable 'pointer' declared const here
-void func(int value, thread int* const pointer) {
-                     ~~~~~~~~~~~~~~~~~~^~~~~~~
-program_source:9:3: error: no matching function for call to 'func'
-  func(123, i);
-  ^~~~
-program_source:4:6: note: candidate function not viable: no known conversion from 'int' to 'int *const' for 2nd argument; take the address of the argument with &
-void func(int value, thread int* const pointer) {
-     ^
-
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
index 1b861a3..910c21d 100644
--- 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
@@ -1,31 +1,28 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: str = struct @align(4) {
-  arr:array<i32, 4> @offset(0)
-}
+struct str {
+  tint_array<int, 4> arr;
+};
+struct tint_module_vars_struct {
+  device str* S;
+};
 
-$B1: {  # root
-  %S:ptr<storage, str, read_write> = var @binding_point(0, 0)
+void func(device tint_array<int, 4>* const pointer) {
+  (*pointer) = tint_array<int, 4>{};
 }
-
-%func = func(%pointer:ptr<storage, array<i32, 4>, read_write>):void {
-  $B2: {
-    store %pointer, array<i32, 4>(0i)
-    ret
-  }
+kernel void tint_symbol(device str* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  func((&(*tint_module_vars.S).arr));
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %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
index fcdbb3b..7dde63a 100644
--- 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
@@ -1,26 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %S:ptr<storage, i32, read_write> = var @binding_point(0, 0)
+void func(device int* const pointer) {
+  (*pointer) = 42;
 }
-
-%func = func(%pointer:ptr<storage, i32, read_write>):void {
-  $B2: {
-    store %pointer, 42i
-    ret
-  }
+kernel void tint_symbol(device int* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  func(tint_module_vars.S);
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %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
index 4faa5a7..2de93aa 100644
--- 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
@@ -1,31 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct str {
+  int i;
+};
+struct tint_module_vars_struct {
+  device str* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: str = struct @align(4) {
-  i:i32 @offset(0)
+void func(device int* const pointer) {
+  (*pointer) = 42;
 }
-
-$B1: {  # root
-  %S:ptr<storage, str, read_write> = var @binding_point(0, 0)
+kernel void tint_symbol(device str* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  func((&(*tint_module_vars.S).i));
 }
-
-%func = func(%pointer:ptr<storage, i32, read_write>):void {
-  $B2: {
-    store %pointer, 42i
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %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
index 6fe5e92..752fa8b 100644
--- 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
@@ -1,31 +1,28 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct str {
+  int i;
+};
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: str = struct @align(4) {
-  i:i32 @offset(0)
-}
+struct tint_module_vars_struct {
+  device tint_array<str, 4>* S;
+};
 
-$B1: {  # root
-  %S:ptr<storage, array<str, 4>, read_write> = var @binding_point(0, 0)
+void func(device str* const pointer) {
+  (*pointer) = str{};
 }
-
-%func = func(%pointer:ptr<storage, str, read_write>):void {
-  $B2: {
-    store %pointer, str(0i)
-    ret
-  }
+kernel void tint_symbol(device tint_array<str, 4>* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  func((&(*tint_module_vars.S)[2]));
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %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
index 32234ae..53d54f1 100644
--- 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
@@ -1,27 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float2x2* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %S:ptr<storage, mat2x2<f32>, read_write> = var @binding_point(0, 0)
+void func(device float2* const pointer) {
+  (*pointer) = float2(0.0f);
 }
-
-%func = func(%pointer:ptr<storage, vec2<f32>, read_write>):void {
-  $B2: {
-    store %pointer, vec2<f32>(0.0f)
-    ret
-  }
+kernel void tint_symbol(device float2x2* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  func((&(*tint_module_vars.S)[1]));
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %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
index 0d2a0ce..a0155aa 100644
--- 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
@@ -1,26 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float4* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %S:ptr<storage, vec4<f32>, read_write> = var @binding_point(0, 0)
+void func(device float4* const pointer) {
+  (*pointer) = float4(0.0f);
 }
-
-%func = func(%pointer:ptr<storage, vec4<f32>, read_write>):void {
-  $B2: {
-    store %pointer, vec4<f32>(0.0f)
-    ret
-  }
+kernel void tint_symbol(device float4* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  func(tint_module_vars.S);
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %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
index b5c1b0f..b5e1c91 100644
--- 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
@@ -1,27 +1,13 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device float2x4* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %S:ptr<storage, mat2x4<f32>, read_write> = var @binding_point(0, 0)
+void func(device float4* const pointer) {
+  (*pointer) = float4(0.0f);
 }
-
-%func = func(%pointer:ptr<storage, vec4<f32>, read_write>):void {
-  $B2: {
-    store %pointer, vec4<f32>(0.0f)
-    ret
-  }
+kernel void tint_symbol(device float2x4* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  func((&(*tint_module_vars.S)[1]));
 }
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %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
index bda7b20..bb3ec34 100644
--- 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
@@ -1,31 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct str {
+  float4 i;
+};
+struct tint_module_vars_struct {
+  device str* S;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: str = struct @align(16) {
-  i:vec4<f32> @offset(0)
+void func(device float4* const pointer) {
+  (*pointer) = float4(0.0f);
 }
-
-$B1: {  # root
-  %S:ptr<storage, str, read_write> = var @binding_point(0, 0)
+kernel void tint_symbol(device str* S [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.S=S};
+  func((&(*tint_module_vars.S).i));
 }
-
-%func = func(%pointer:ptr<storage, vec4<f32>, read_write>):void {
-  $B2: {
-    store %pointer, vec4<f32>(0.0f)
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %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_sugar/array.wgsl.expected.ir.msl b/test/tint/ptr_sugar/array.wgsl.expected.ir.msl
index bdb6bf8..01e8c49 100644
--- a/test/tint/ptr_sugar/array.wgsl.expected.ir.msl
+++ b/test/tint/ptr_sugar/array.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -17,43 +15,43 @@
 
 void deref_const() {
   tint_array<int, 10> a = {};
-  thread tint_array<int, 10>* const p = a;
-  int b = p[0];
-  p[0] = 42;
+  thread tint_array<int, 10>* const p = (&a);
+  int b = (*p)[0];
+  (*p)[0] = 42;
 }
 void no_deref_const() {
   tint_array<int, 10> a = {};
-  thread tint_array<int, 10>* const p = a;
-  int b = p[0];
-  p[0] = 42;
+  thread tint_array<int, 10>* const p = (&a);
+  int b = (*p)[0];
+  (*p)[0] = 42;
 }
 void deref_let() {
   tint_array<int, 10> a = {};
-  thread tint_array<int, 10>* const p = a;
+  thread tint_array<int, 10>* const p = (&a);
   int const i = 0;
-  int b = p[i];
-  p[0] = 42;
+  int b = (*p)[i];
+  (*p)[0] = 42;
 }
 void no_deref_let() {
   tint_array<int, 10> a = {};
-  thread tint_array<int, 10>* const p = a;
+  thread tint_array<int, 10>* const p = (&a);
   int const i = 0;
-  int b = p[i];
-  p[0] = 42;
+  int b = (*p)[i];
+  (*p)[0] = 42;
 }
 void deref_var() {
   tint_array<int, 10> a = {};
-  thread tint_array<int, 10>* const p = a;
+  thread tint_array<int, 10>* const p = (&a);
   int i = 0;
-  int b = p[i];
-  p[0] = 42;
+  int b = (*p)[i];
+  (*p)[0] = 42;
 }
 void no_deref_var() {
   tint_array<int, 10> a = {};
-  thread tint_array<int, 10>* const p = a;
+  thread tint_array<int, 10>* const p = (&a);
   int i = 0;
-  int b = p[i];
-  p[0] = 42;
+  int b = (*p)[i];
+  (*p)[0] = 42;
 }
 kernel void tint_symbol() {
   deref_const();
@@ -63,268 +61,3 @@
   deref_var();
   no_deref_var();
 }
-program_source:18:37: error: no viable conversion from 'tint_array<int, 10>' to 'tint_array<int, 10> *const'
-  thread tint_array<int, 10>* const p = a;
-                                    ^   ~
-program_source:19:7: error: no viable conversion from 'tint_array<int, 10>' to 'int'
-  int b = p[0];
-      ^   ~~~~
-program_source:20:8: error: no viable overloaded '='
-  p[0] = 42;
-  ~~~~ ^ ~~
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const tint_array<int, 10>' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const device tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const threadgroup tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const constant tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'tint_array<int, 10>' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'device tint_array<int, 10> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'threadgroup tint_array<int, 10> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:24:37: error: no viable conversion from 'tint_array<int, 10>' to 'tint_array<int, 10> *const'
-  thread tint_array<int, 10>* const p = a;
-                                    ^   ~
-program_source:25:7: error: no viable conversion from 'tint_array<int, 10>' to 'int'
-  int b = p[0];
-      ^   ~~~~
-program_source:26:8: error: no viable overloaded '='
-  p[0] = 42;
-  ~~~~ ^ ~~
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const tint_array<int, 10>' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const device tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const threadgroup tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const constant tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'tint_array<int, 10>' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'device tint_array<int, 10> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'threadgroup tint_array<int, 10> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:30:37: error: no viable conversion from 'tint_array<int, 10>' to 'tint_array<int, 10> *const'
-  thread tint_array<int, 10>* const p = a;
-                                    ^   ~
-program_source:32:7: error: no viable conversion from 'tint_array<int, 10>' to 'int'
-  int b = p[i];
-      ^   ~~~~
-program_source:33:8: error: no viable overloaded '='
-  p[0] = 42;
-  ~~~~ ^ ~~
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const tint_array<int, 10>' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const device tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const threadgroup tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const constant tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'tint_array<int, 10>' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'device tint_array<int, 10> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'threadgroup tint_array<int, 10> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:37:37: error: no viable conversion from 'tint_array<int, 10>' to 'tint_array<int, 10> *const'
-  thread tint_array<int, 10>* const p = a;
-                                    ^   ~
-program_source:39:7: error: no viable conversion from 'tint_array<int, 10>' to 'int'
-  int b = p[i];
-      ^   ~~~~
-program_source:40:8: error: no viable overloaded '='
-  p[0] = 42;
-  ~~~~ ^ ~~
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const tint_array<int, 10>' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const device tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const threadgroup tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const constant tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'tint_array<int, 10>' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'device tint_array<int, 10> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'threadgroup tint_array<int, 10> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:44:37: error: no viable conversion from 'tint_array<int, 10>' to 'tint_array<int, 10> *const'
-  thread tint_array<int, 10>* const p = a;
-                                    ^   ~
-program_source:46:7: error: no viable conversion from 'tint_array<int, 10>' to 'int'
-  int b = p[i];
-      ^   ~~~~
-program_source:47:8: error: no viable overloaded '='
-  p[0] = 42;
-  ~~~~ ^ ~~
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const tint_array<int, 10>' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const device tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const threadgroup tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const constant tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'tint_array<int, 10>' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'device tint_array<int, 10> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'threadgroup tint_array<int, 10> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:51:37: error: no viable conversion from 'tint_array<int, 10>' to 'tint_array<int, 10> *const'
-  thread tint_array<int, 10>* const p = a;
-                                    ^   ~
-program_source:53:7: error: no viable conversion from 'tint_array<int, 10>' to 'int'
-  int b = p[i];
-      ^   ~~~~
-program_source:54:8: error: no viable overloaded '='
-  p[0] = 42;
-  ~~~~ ^ ~~
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const tint_array<int, 10>' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const device tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const threadgroup tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const constant tint_array<int, 10> &' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'tint_array<int, 10>' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'device tint_array<int, 10> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: no known conversion from 'int' to 'threadgroup tint_array<int, 10> &&' for 1st argument
-struct tint_array {
-       ^
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:4:8: note: candidate function (the implicit move assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-
diff --git a/test/tint/ptr_sugar/builtin_struct.wgsl.expected.ir.msl b/test/tint/ptr_sugar/builtin_struct.wgsl.expected.ir.msl
index 2090c9a..a8de316 100644
--- a/test/tint/ptr_sugar/builtin_struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_sugar/builtin_struct.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct modf_result_f32 {
@@ -13,27 +11,27 @@
 
 void deref_modf() {
   modf_result_f32 a = modf_result_f32{.fract=0.5f, .whole=1.0f};
-  thread modf_result_f32* const p = a;
-  float fract = p.fract;
-  float whole = p.whole;
+  thread modf_result_f32* const p = (&a);
+  float fract = (*p).fract;
+  float whole = (*p).whole;
 }
 void no_deref_modf() {
   modf_result_f32 a = modf_result_f32{.fract=0.5f, .whole=1.0f};
-  thread modf_result_f32* const p = a;
-  float fract = p.fract;
-  float whole = p.whole;
+  thread modf_result_f32* const p = (&a);
+  float fract = (*p).fract;
+  float whole = (*p).whole;
 }
 void deref_frexp() {
   frexp_result_f32 a = frexp_result_f32{.fract=0.75f, .exp=1};
-  thread frexp_result_f32* const p = a;
-  float fract = p.fract;
-  int exp = p.exp;
+  thread frexp_result_f32* const p = (&a);
+  float fract = (*p).fract;
+  int exp = (*p).exp;
 }
 void no_deref_frexp() {
   frexp_result_f32 a = frexp_result_f32{.fract=0.75f, .exp=1};
-  thread frexp_result_f32* const p = a;
-  float fract = p.fract;
-  int exp = p.exp;
+  thread frexp_result_f32* const p = (&a);
+  float fract = (*p).fract;
+  int exp = (*p).exp;
 }
 kernel void tint_symbol() {
   deref_modf();
@@ -41,48 +39,3 @@
   deref_frexp();
   no_deref_frexp();
 }
-program_source:14:33: error: no viable conversion from 'modf_result_f32' to 'modf_result_f32 *const'
-  thread modf_result_f32* const p = a;
-                                ^   ~
-program_source:15:18: error: member reference type 'modf_result_f32 *const' is a pointer; did you mean to use '->'?
-  float fract = p.fract;
-                ~^
-                 ->
-program_source:16:18: error: member reference type 'modf_result_f32 *const' is a pointer; did you mean to use '->'?
-  float whole = p.whole;
-                ~^
-                 ->
-program_source:20:33: error: no viable conversion from 'modf_result_f32' to 'modf_result_f32 *const'
-  thread modf_result_f32* const p = a;
-                                ^   ~
-program_source:21:18: error: member reference type 'modf_result_f32 *const' is a pointer; did you mean to use '->'?
-  float fract = p.fract;
-                ~^
-                 ->
-program_source:22:18: error: member reference type 'modf_result_f32 *const' is a pointer; did you mean to use '->'?
-  float whole = p.whole;
-                ~^
-                 ->
-program_source:26:34: error: no viable conversion from 'frexp_result_f32' to 'frexp_result_f32 *const'
-  thread frexp_result_f32* const p = a;
-                                 ^   ~
-program_source:27:18: error: member reference type 'frexp_result_f32 *const' is a pointer; did you mean to use '->'?
-  float fract = p.fract;
-                ~^
-                 ->
-program_source:28:14: error: member reference type 'frexp_result_f32 *const' is a pointer; did you mean to use '->'?
-  int exp = p.exp;
-            ~^
-             ->
-program_source:32:34: error: no viable conversion from 'frexp_result_f32' to 'frexp_result_f32 *const'
-  thread frexp_result_f32* const p = a;
-                                 ^   ~
-program_source:33:18: error: member reference type 'frexp_result_f32 *const' is a pointer; did you mean to use '->'?
-  float fract = p.fract;
-                ~^
-                 ->
-program_source:34:14: error: member reference type 'frexp_result_f32 *const' is a pointer; did you mean to use '->'?
-  int exp = p.exp;
-            ~^
-             ->
-
diff --git a/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.msl b/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.msl
index 7442043..032621d 100644
--- a/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.msl
+++ b/test/tint/ptr_sugar/compound_assign_index.wgsl.expected.ir.msl
@@ -1,27 +1,25 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 void deref() {
   int3 a = 0;
-  thread int3* const p = a;
-  p[0] = (p[0] + 42);
+  thread int3* const p = (&a);
+  (*p)[0] = ((*p)[0] + 42);
 }
 void no_deref() {
   int3 a = 0;
-  thread int3* const p = a;
-  p[0] = (p[0] + 42);
+  thread int3* const p = (&a);
+  (*p)[0] = ((*p)[0] + 42);
 }
 void deref_inc() {
   int3 a = 0;
-  thread int3* const p = a;
-  p[0] = (p[0] + 1);
+  thread int3* const p = (&a);
+  (*p)[0] = ((*p)[0] + 1);
 }
 void no_deref_inc() {
   int3 a = 0;
-  thread int3* const p = a;
-  p[0] = (p[0] + 1);
+  thread int3* const p = (&a);
+  (*p)[0] = ((*p)[0] + 1);
 }
 kernel void tint_symbol() {
   deref();
@@ -29,16 +27,3 @@
   deref_inc();
   no_deref_inc();
 }
-program_source:6:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-program_source:11:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-program_source:16:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-program_source:21:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-
diff --git a/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.msl b/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.msl
index 0c742d4..62537f4 100644
--- a/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.msl
+++ b/test/tint/ptr_sugar/compound_assign_member.wgsl.expected.ir.msl
@@ -1,26 +1,17 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 void deref() {
   int3 a = 0;
-  thread int3* const p = a;
-  p[0u] = (p[0u] + 42);
+  thread int3* const p = (&a);
+  (*p)[0u] = ((*p)[0u] + 42);
 }
 void no_deref() {
   int3 a = 0;
-  thread int3* const p = a;
-  p[0u] = (p[0u] + 42);
+  thread int3* const p = (&a);
+  (*p)[0u] = ((*p)[0u] + 42);
 }
 kernel void tint_symbol() {
   deref();
   no_deref();
 }
-program_source:6:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-program_source:11:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-
diff --git a/test/tint/ptr_sugar/matrix.wgsl.expected.ir.msl b/test/tint/ptr_sugar/matrix.wgsl.expected.ir.msl
index b9a3275..613aa1d 100644
--- a/test/tint/ptr_sugar/matrix.wgsl.expected.ir.msl
+++ b/test/tint/ptr_sugar/matrix.wgsl.expected.ir.msl
@@ -1,68 +1,19 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 void deref() {
   float2x3 a = float2x3(0.0f);
-  thread float2x3* const p = a;
-  float3 b = p[0];
-  p[0] = float3(1.0f, 2.0f, 3.0f);
+  thread float2x3* const p = (&a);
+  float3 b = (*p)[0];
+  (*p)[0] = float3(1.0f, 2.0f, 3.0f);
 }
 void no_deref() {
   float2x3 a = float2x3(0.0f);
-  thread float2x3* const p = a;
-  float3 b = p[0];
-  p[0] = float3(1.0f, 2.0f, 3.0f);
+  thread float2x3* const p = (&a);
+  float3 b = (*p)[0];
+  (*p)[0] = float3(1.0f, 2.0f, 3.0f);
 }
 kernel void tint_symbol() {
   deref();
   no_deref();
 }
-program_source:6:26: error: no viable conversion from 'metal::float2x3' (aka 'matrix<float, 2, 3>') to 'metal::float2x3 *const' (aka 'matrix<float, 2, 3> *const')
-  thread float2x3* const p = a;
-                         ^   ~
-program_source:7:10: error: no viable conversion from 'metal::float2x3' (aka 'matrix<float, 2, 3>') to 'float3' (vector of 3 'float' values)
-  float3 b = p[0];
-         ^   ~~~~
-program_source:8:8: error: no viable overloaded '='
-  p[0] = float3(1.0f, 2.0f, 3.0f);
-  ~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'const metal::matrix<float, 2, 3, void>' for 1st argument
-struct matrix
-       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'const device metal::matrix<float, 2, 3, void> &' for 1st argument
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'const threadgroup metal::matrix<float, 2, 3, void> &' for 1st argument
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'const constant metal::matrix<float, 2, 3, void> &' for 1st argument
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-program_source:12:26: error: no viable conversion from 'metal::float2x3' (aka 'matrix<float, 2, 3>') to 'metal::float2x3 *const' (aka 'matrix<float, 2, 3> *const')
-  thread float2x3* const p = a;
-                         ^   ~
-program_source:13:10: error: no viable conversion from 'metal::float2x3' (aka 'matrix<float, 2, 3>') to 'float3' (vector of 3 'float' values)
-  float3 b = p[0];
-         ^   ~~~~
-program_source:14:8: error: no viable overloaded '='
-  p[0] = float3(1.0f, 2.0f, 3.0f);
-  ~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'const metal::matrix<float, 2, 3, void>' for 1st argument
-struct matrix
-       ^
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'const device metal::matrix<float, 2, 3, void> &' for 1st argument
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'const threadgroup metal::matrix<float, 2, 3, void> &' for 1st argument
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'float3' (vector of 3 'float' values) to 'const constant metal::matrix<float, 2, 3, void> &' for 1st argument
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'device'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-/System/Library/PrivateFrameworks/GPUCompiler.framework/Versions/32023/Libraries/lib/clang/32023.194/include/metal/metal_matrix:21:8: note: candidate function (the implicit copy assignment operator) not viable: 'this' object is in default address space, but method expects object in address space 'threadgroup'
-
diff --git a/test/tint/ptr_sugar/struct.wgsl.expected.ir.msl b/test/tint/ptr_sugar/struct.wgsl.expected.ir.msl
index 709c93d..a13fcf8 100644
--- a/test/tint/ptr_sugar/struct.wgsl.expected.ir.msl
+++ b/test/tint/ptr_sugar/struct.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct S {
@@ -8,40 +6,17 @@
 
 void deref() {
   S a = {};
-  thread S* const p = a;
-  int b = p.x;
-  p.x = 42;
+  thread S* const p = (&a);
+  int b = (*p).x;
+  (*p).x = 42;
 }
 void no_deref() {
   S a = {};
-  thread S* const p = a;
-  int b = p.x;
-  p.x = 42;
+  thread S* const p = (&a);
+  int b = (*p).x;
+  (*p).x = 42;
 }
 kernel void tint_symbol() {
   deref();
   no_deref();
 }
-program_source:9:19: error: no viable conversion from 'S' to 'S *const'
-  thread S* const p = a;
-                  ^   ~
-program_source:10:12: error: member reference type 'S *const' is a pointer; did you mean to use '->'?
-  int b = p.x;
-          ~^
-           ->
-program_source:11:4: error: member reference type 'S *const' is a pointer; did you mean to use '->'?
-  p.x = 42;
-  ~^
-   ->
-program_source:15:19: error: no viable conversion from 'S' to 'S *const'
-  thread S* const p = a;
-                  ^   ~
-program_source:16:12: error: member reference type 'S *const' is a pointer; did you mean to use '->'?
-  int b = p.x;
-          ~^
-           ->
-program_source:17:4: error: member reference type 'S *const' is a pointer; did you mean to use '->'?
-  p.x = 42;
-  ~^
-   ->
-
diff --git a/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.msl b/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.msl
index 8404a69..9e0f829 100644
--- a/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.msl
+++ b/test/tint/ptr_sugar/vector_index.wgsl.expected.ir.msl
@@ -1,47 +1,45 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 void deref_const() {
   int3 a = 0;
-  thread int3* const p = a;
-  int b = p[0];
-  p[0] = 42;
+  thread int3* const p = (&a);
+  int b = (*p)[0];
+  (*p)[0] = 42;
 }
 void no_deref_const() {
   int3 a = 0;
-  thread int3* const p = a;
-  int b = p[0];
-  p[0] = 42;
+  thread int3* const p = (&a);
+  int b = (*p)[0];
+  (*p)[0] = 42;
 }
 void deref_let() {
   int3 a = 0;
-  thread int3* const p = a;
+  thread int3* const p = (&a);
   int const i = 0;
-  int b = p[i];
-  p[0] = 42;
+  int b = (*p)[i];
+  (*p)[0] = 42;
 }
 void no_deref_let() {
   int3 a = 0;
-  thread int3* const p = a;
+  thread int3* const p = (&a);
   int const i = 0;
-  int b = p[i];
-  p[0] = 42;
+  int b = (*p)[i];
+  (*p)[0] = 42;
 }
 void deref_var() {
   int3 a = 0;
-  thread int3* const p = a;
+  thread int3* const p = (&a);
   int i = 0;
-  int b = p[i];
-  p[0] = 42;
+  int b = (*p)[i];
+  (*p)[0] = 42;
 }
 void no_deref_var() {
   int3 a = 0;
-  thread int3* const p = a;
+  thread int3* const p = (&a);
   int const i = 0;
-  int b = p[i];
-  p[0] = 42;
+  int b = (*p)[i];
+  (*p)[0] = 42;
 }
 kernel void tint_symbol() {
   deref_const();
@@ -51,40 +49,3 @@
   deref_var();
   no_deref_var();
 }
-program_source:6:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-program_source:7:7: error: cannot initialize a variable of type 'int' with an lvalue of type 'int3' (vector of 3 'int' values)
-  int b = p[0];
-      ^   ~~~~
-program_source:12:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-program_source:13:7: error: cannot initialize a variable of type 'int' with an lvalue of type 'int3' (vector of 3 'int' values)
-  int b = p[0];
-      ^   ~~~~
-program_source:18:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-program_source:20:7: error: cannot initialize a variable of type 'int' with an lvalue of type 'int3' (vector of 3 'int' values)
-  int b = p[i];
-      ^   ~~~~
-program_source:25:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-program_source:27:7: error: cannot initialize a variable of type 'int' with an lvalue of type 'int3' (vector of 3 'int' values)
-  int b = p[i];
-      ^   ~~~~
-program_source:32:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-program_source:34:7: error: cannot initialize a variable of type 'int' with an lvalue of type 'int3' (vector of 3 'int' values)
-  int b = p[i];
-      ^   ~~~~
-program_source:39:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-program_source:41:7: error: cannot initialize a variable of type 'int' with an lvalue of type 'int3' (vector of 3 'int' values)
-  int b = p[i];
-      ^   ~~~~
-
diff --git a/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.msl b/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.msl
index 4039c66..f4b8812 100644
--- a/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.msl
+++ b/test/tint/ptr_sugar/vector_member.wgsl.expected.ir.msl
@@ -1,34 +1,19 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 
 void deref() {
   int3 a = 0;
-  thread int3* const p = a;
-  int b = p[0u];
-  p[0u] = 42;
+  thread int3* const p = (&a);
+  int b = (*p)[0u];
+  (*p)[0u] = 42;
 }
 void no_deref() {
   int3 a = 0;
-  thread int3* const p = a;
-  int b = p[0u];
-  p[0u] = 42;
+  thread int3* const p = (&a);
+  int b = (*p)[0u];
+  (*p)[0u] = 42;
 }
 kernel void tint_symbol() {
   deref();
   no_deref();
 }
-program_source:6:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-program_source:7:7: error: cannot initialize a variable of type 'int' with an lvalue of type 'int3' (vector of 3 'int' values)
-  int b = p[0u];
-      ^   ~~~~~
-program_source:12:22: error: cannot initialize a variable of type 'int3 *const' with an lvalue of type 'int3' (vector of 3 'int' values)
-  thread int3* const p = a;
-                     ^   ~
-program_source:13:7: error: cannot initialize a variable of type 'int' with an lvalue of type 'int3' (vector of 3 'int' values)
-  int b = p[0u];
-      ^   ~~~~~
-
diff --git a/test/tint/samples/simple_vertex.spvasm.expected.ir.msl b/test/tint/samples/simple_vertex.spvasm.expected.ir.msl
index 7dba87b..65eb95d 100644
--- a/test/tint/samples/simple_vertex.spvasm.expected.ir.msl
+++ b/test/tint/samples/simple_vertex.spvasm.expected.ir.msl
@@ -1,20 +1,18 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float4* gl_Position;
+};
 struct main_out {
   float4 gl_Position [[position]];
 };
 
-thread float4 gl_Position = 0.0f;
-void main_1() {
-  gl_Position = float4(0.0f);
+void main_1(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.gl_Position) = float4(0.0f);
 }
 vertex main_out tint_symbol() {
-  main_1();
-  return {.gl_Position=gl_Position};
+  thread float4 gl_Position = 0.0f;
+  tint_module_vars_struct const tint_module_vars = {.gl_Position=(&gl_Position)};
+  main_1(tint_module_vars);
+  return {.gl_Position=(*tint_module_vars.gl_Position)};
 }
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 gl_Position = 0.0f;
-              ^
-
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
index 5e20a80..485ec60 100644
--- a/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/complex_lhs.wgsl.expected.ir.msl
@@ -1,7 +1,8 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* counter;
+};
 template<typename T, size_t N>
 struct tint_array {
   const constant T& operator[](size_t i) const constant { return elements[i]; }
@@ -18,33 +19,18 @@
   tint_array<int4, 4> a;
 };
 
-thread int counter = 0;
-int foo() {
-  counter = (counter + 1);
-  return counter;
+int foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 1);
+  return (*tint_module_vars.counter);
 }
-int bar() {
-  counter = (counter + 2);
-  return counter;
+int bar(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.counter) = ((*tint_module_vars.counter) + 2);
+  return (*tint_module_vars.counter);
 }
-void tint_symbol() {
+void tint_symbol(tint_module_vars_struct tint_module_vars) {
   S x = S{};
-  thread S* const p = x;
-  thread int4* const v = p.a[foo()];
-  int const v_1 = bar();
-  v[v_1] = (v[v_1] + 5);
+  thread S* const p = (&x);
+  thread int4* const v = (&(*p).a[foo(tint_module_vars)]);
+  int const v_1 = bar(tint_module_vars);
+  (*v)[v_1] = ((*v)[v_1] + 5);
 }
-program_source:19:12: error: program scope variable must reside in constant address space
-thread int counter = 0;
-           ^
-program_source:30:19: error: no viable conversion from 'S' to 'S *const'
-  thread S* const p = x;
-                  ^   ~
-program_source:31:27: error: member reference type 'S *const' is a pointer; did you mean to use '->'?
-  thread int4* const v = p.a[foo()];
-                         ~^
-                          ->
-program_source:31:22: error: cannot initialize a variable of type 'int4 *const' with an lvalue of type 'int __attribute__((ext_vector_type(4)))' (vector of 4 'int' values)
-  thread int4* const v = p.a[foo()];
-                     ^   ~~~~~~~~~~
-
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
index 0cad888..05a8d5f 100644
--- a/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/for_loop.wgsl.expected.ir.msl
@@ -1,86 +1,52 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+  float4 b;
+  float2x2 c;
+};
+struct tint_module_vars_struct {
+  device S* v;
+  thread uint* i;
+};
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:i32 @offset(0)
-  b:vec4<f32> @offset(16)
-  c:mat2x2<f32> @offset(32)
-}
 
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-  %i:ptr<private, u32, read_write> = var
+int idx1(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.i) = ((*tint_module_vars.i) + 1u);
+  return 1;
 }
-
-%idx1 = func():i32 {
-  $B2: {
-    %4:u32 = load %i
-    %5:u32 = add %4, 1u
-    store %i, %5
-    ret 1i
-  }
+int idx2(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.i) = ((*tint_module_vars.i) + 2u);
+  return 1;
 }
-%idx2 = func():i32 {
-  $B3: {
-    %7:u32 = load %i
-    %8:u32 = add %7, 2u
-    store %i, %8
-    ret 1i
-  }
+int idx3(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.i) = ((*tint_module_vars.i) + 3u);
+  return 1;
 }
-%idx3 = func():i32 {
-  $B4: {
-    %10:u32 = load %i
-    %11:u32 = add %10, 3u
-    store %i, %11
-    ret 1i
-  }
-}
-%foo = func():void {
-  $B5: {
-    %a:ptr<function, array<f32, 4>, read_write> = var, array<f32, 4>(0.0f)
-    loop [i: $B6, b: $B7, c: $B8] {  # loop_1
-      $B6: {  # initializer
-        %14:i32 = call %idx1
-        %15:ptr<function, f32, read_write> = access %a, %14
-        %16:ptr<function, f32, read_write> = let %15
-        %17:f32 = load %16
-        %18:f32 = mul %17, 2.0f
-        store %16, %18
-        next_iteration  # -> $B7
+void foo(tint_module_vars_struct tint_module_vars) {
+  tint_array<float, 4> a = tint_array<float, 4>{};
+  {
+    thread float* const v_1 = (&a[idx1(tint_module_vars)]);
+    (*v_1) = ((*v_1) * 2.0f);
+    while(true) {
+      if ((a[idx2(tint_module_vars)] < 10.0f)) {
+      } else {
+        break;
       }
-      $B7: {  # body
-        %19:i32 = call %idx2
-        %20:ptr<function, f32, read_write> = access %a, %19
-        %21:f32 = load %20
-        %22:bool = lt %21, 10.0f
-        if %22 [t: $B9, f: $B10] {  # if_1
-          $B9: {  # true
-            exit_if  # if_1
-          }
-          $B10: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        continue  # -> $B8
-      }
-      $B8: {  # continuing
-        %23:i32 = call %idx3
-        %24:ptr<function, f32, read_write> = access %a, %23
-        %25:ptr<function, f32, read_write> = let %24
-        %26:f32 = load %25
-        %27:f32 = add %26, 1.0f
-        store %25, %27
-        next_iteration  # -> $B7
-      }
+      thread float* const v_2 = (&a[idx3(tint_module_vars)]);
+      (*v_2) = ((*v_2) + 1.0f);
+      continue;
     }
-    ret
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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
index 16766aa..e415342 100644
--- a/test/tint/statements/compound_assign/matrix/minus.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/matrix/minus.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float4x4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:mat4x4<f32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a - float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f)));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index 618b4be..201d7be 100644
--- a/test/tint/statements/compound_assign/matrix/plus.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/matrix/plus.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float4x4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:mat4x4<f32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a + float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f)));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index 782a03f..910b96b 100644
--- 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
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float4x4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:mat4x4<f32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a * 2.0f);
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index 82f7729..0fa4a1d 100644
--- a/test/tint/statements/compound_assign/matrix/times.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/matrix/times.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float4x4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:mat4x4<f32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a * float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f)));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index acff416..69458bc 100644
--- a/test/tint/statements/compound_assign/private.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/private.wgsl.expected.ir.msl
@@ -1,26 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* a;
+  thread float4* b;
+  thread float2x2* c;
+};
 
-thread int a = 0;
-thread float4 b = 0.0f;
-thread float2x2 c = float2x2(0.0f);
-void foo() {
-  a = tint_div_i32(a, 2);
-  b = (b * float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f)));
-  c = (c * 2.0f);
-}
 int tint_div_i32(int lhs, int rhs) {
   return (lhs / select(rhs, 1, ((rhs == 0) | ((lhs == (-2147483647 - 1)) & (rhs == -1)))));
 }
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int a = 0;
-           ^
-program_source:5:15: error: program scope variable must reside in constant address space
-thread float4 b = 0.0f;
-              ^
-program_source:6:17: error: program scope variable must reside in constant address space
-thread float2x2 c = float2x2(0.0f);
-                ^
-
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.a) = tint_div_i32((*tint_module_vars.a), 2);
+  (*tint_module_vars.b) = ((*tint_module_vars.b) * float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f)));
+  (*tint_module_vars.c) = ((*tint_module_vars.c) * 2.0f);
+}
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
index 4fd5a35..87af1e6 100644
--- a/test/tint/statements/compound_assign/scalar/and.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/scalar/and.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  a:i32 @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a & 2);
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index b447b48..3506923 100644
--- a/test/tint/statements/compound_assign/scalar/divide.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/scalar/divide.wgsl.expected.ir.msl
@@ -1,39 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  a:i32 @offset(0)
+int tint_div_i32(int lhs, int rhs) {
+  return (lhs / select(rhs, 1, ((rhs == 0) | ((lhs == (-2147483647 - 1)) & (rhs == -1)))));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = tint_div_i32((*tint_module_vars.v).a, 2);
 }
-
-%foo = func():void {
-  $B2: {
-    %3:ptr<storage, i32, read_write> = access %v, 0u
-    %4:i32 = load %3
-    %5:i32 = call %tint_div_i32, %4, 2i
-    store %3, %5
-    ret
-  }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
-  $B3: {
-    %9:bool = eq %rhs, 0i
-    %10:bool = eq %lhs, -2147483648i
-    %11:bool = eq %rhs, -1i
-    %12:bool = and %10, %11
-    %13:bool = or %9, %12
-    %14:i32 = select %rhs, 1i, %13
-    %15:i32 = div %lhs, %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/statements/compound_assign/scalar/minus.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/minus.wgsl.expected.ir.msl
index 21b1ae8..3a124e0 100644
--- a/test/tint/statements/compound_assign/scalar/minus.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/scalar/minus.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  a:i32 @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a - 2);
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index 576802c..f0eba4a 100644
--- a/test/tint/statements/compound_assign/scalar/modulo.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/scalar/modulo.wgsl.expected.ir.msl
@@ -1,42 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  a:i32 @offset(0)
+int tint_mod_i32(int lhs, int rhs) {
+  int const v_1 = select(rhs, 1, ((rhs == 0) | ((lhs == (-2147483647 - 1)) & (rhs == -1))));
+  return (lhs - ((lhs / v_1) * v_1));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = tint_mod_i32((*tint_module_vars.v).a, 2);
 }
-
-%foo = func():void {
-  $B2: {
-    %3:ptr<storage, i32, read_write> = access %v, 0u
-    %4:i32 = load %3
-    %5:i32 = call %tint_mod_i32, %4, 2i
-    store %3, %5
-    ret
-  }
-}
-%tint_mod_i32 = func(%lhs:i32, %rhs:i32):i32 {
-  $B3: {
-    %9:bool = eq %rhs, 0i
-    %10:bool = eq %lhs, -2147483648i
-    %11:bool = eq %rhs, -1i
-    %12:bool = and %10, %11
-    %13:bool = or %9, %12
-    %14:i32 = select %rhs, 1i, %13
-    %15:i32 = let %14
-    %16:i32 = div %lhs, %15
-    %17:i32 = mul %16, %15
-    %18:i32 = sub %lhs, %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/statements/compound_assign/scalar/or.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/or.wgsl.expected.ir.msl
index 3a756ab..07549af 100644
--- a/test/tint/statements/compound_assign/scalar/or.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/scalar/or.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  a:i32 @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a | 2);
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index 9bd6a64..2db63be 100644
--- a/test/tint/statements/compound_assign/scalar/plus.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/scalar/plus.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  a:i32 @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a + 2);
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index f51a6e5..b0d888c 100644
--- 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
@@ -1,28 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  a:i32 @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a << (2u & 31u));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %3:ptr<storage, i32, read_write> = access %v, 0u
-    %4:i32 = load %3
-    %5:u32 = and 2u, 31u
-    %6:i32 = shl %4, %5
-    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/statements/compound_assign/scalar/shift_right.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/shift_right.wgsl.expected.ir.msl
index 1619a15..06a866e 100644
--- 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
@@ -1,28 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  a:i32 @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a >> (2u & 31u));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %3:ptr<storage, i32, read_write> = access %v, 0u
-    %4:i32 = load %3
-    %5:u32 = and 2u, 31u
-    %6:i32 = shr %4, %5
-    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/statements/compound_assign/scalar/times.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/scalar/times.wgsl.expected.ir.msl
index b32922d..ec1a589 100644
--- a/test/tint/statements/compound_assign/scalar/times.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/scalar/times.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  a:i32 @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a * 2);
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index b4259c7..3ef63f2 100644
--- a/test/tint/statements/compound_assign/scalar/xor.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/scalar/xor.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  a:i32 @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a ^ 2);
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index c09bc08..e73ea42 100644
--- a/test/tint/statements/compound_assign/vector/and.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/vector/and.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<i32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a & int4(2));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index cbb1ce9..531ae32 100644
--- 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
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<f32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a / 2.0f);
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index 8586de1..8ddc6aa 100644
--- a/test/tint/statements/compound_assign/vector/divide.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/vector/divide.wgsl.expected.ir.msl
@@ -1,39 +1,15 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<i32> @offset(0)
+int4 tint_div_v4i32(int4 lhs, int4 rhs) {
+  return (lhs / select(rhs, int4(1), ((rhs == int4(0)) | ((lhs == int4((-2147483647 - 1))) & (rhs == int4(-1))))));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = tint_div_v4i32((*tint_module_vars.v).a, int4(2));
 }
-
-%foo = func():void {
-  $B2: {
-    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
-    %4:vec4<i32> = load %3
-    %5:vec4<i32> = call %tint_div_v4i32, %4, vec4<i32>(2i)
-    store %3, %5
-    ret
-  }
-}
-%tint_div_v4i32 = func(%lhs:vec4<i32>, %rhs:vec4<i32>):vec4<i32> {
-  $B3: {
-    %9:vec4<bool> = eq %rhs, vec4<i32>(0i)
-    %10:vec4<bool> = eq %lhs, vec4<i32>(-2147483648i)
-    %11:vec4<bool> = eq %rhs, vec4<i32>(-1i)
-    %12:vec4<bool> = and %10, %11
-    %13:vec4<bool> = or %9, %12
-    %14:vec4<i32> = select %rhs, vec4<i32>(1i), %13
-    %15:vec4<i32> = div %lhs, %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/statements/compound_assign/vector/minus-scalar.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/minus-scalar.wgsl.expected.ir.msl
index caa16e9..e1feff6 100644
--- 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
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<f32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a - 2.0f);
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index 79432d8..921e52a 100644
--- a/test/tint/statements/compound_assign/vector/minus.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/vector/minus.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<i32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a - int4(2));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index 8d83ed2..eaeb8e2 100644
--- 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
@@ -1,44 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<i32> @offset(0)
+int4 tint_mod_v4i32(int4 lhs, int4 rhs) {
+  int4 const v_1 = select(rhs, int4(1), ((rhs == int4(0)) | ((lhs == int4((-2147483647 - 1))) & (rhs == int4(-1)))));
+  return (lhs - ((lhs / v_1) * v_1));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  int4 const v_2 = (*tint_module_vars.v).a;
+  (*tint_module_vars.v).a = tint_mod_v4i32(v_2, int4(2));
 }
-
-%foo = func():void {
-  $B2: {
-    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
-    %4:vec4<i32> = load %3
-    %5:vec4<i32> = let %4
-    %6:vec4<i32> = construct 2i
-    %7:vec4<i32> = call %tint_mod_v4i32, %5, %6
-    store %3, %7
-    ret
-  }
-}
-%tint_mod_v4i32 = func(%lhs:vec4<i32>, %rhs:vec4<i32>):vec4<i32> {
-  $B3: {
-    %11:vec4<bool> = eq %rhs, vec4<i32>(0i)
-    %12:vec4<bool> = eq %lhs, vec4<i32>(-2147483648i)
-    %13:vec4<bool> = eq %rhs, vec4<i32>(-1i)
-    %14:vec4<bool> = and %12, %13
-    %15:vec4<bool> = or %11, %14
-    %16:vec4<i32> = select %rhs, vec4<i32>(1i), %15
-    %17:vec4<i32> = let %16
-    %18:vec4<i32> = div %lhs, %17
-    %19:vec4<i32> = mul %18, %17
-    %20:vec4<i32> = sub %lhs, %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/statements/compound_assign/vector/modulo.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/modulo.wgsl.expected.ir.msl
index 391a18f..1f1b1a3 100644
--- a/test/tint/statements/compound_assign/vector/modulo.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/vector/modulo.wgsl.expected.ir.msl
@@ -1,42 +1,16 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<i32> @offset(0)
+int4 tint_mod_v4i32(int4 lhs, int4 rhs) {
+  int4 const v_1 = select(rhs, int4(1), ((rhs == int4(0)) | ((lhs == int4((-2147483647 - 1))) & (rhs == int4(-1)))));
+  return (lhs - ((lhs / v_1) * v_1));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = tint_mod_v4i32((*tint_module_vars.v).a, int4(2));
 }
-
-%foo = func():void {
-  $B2: {
-    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
-    %4:vec4<i32> = load %3
-    %5:vec4<i32> = call %tint_mod_v4i32, %4, vec4<i32>(2i)
-    store %3, %5
-    ret
-  }
-}
-%tint_mod_v4i32 = func(%lhs:vec4<i32>, %rhs:vec4<i32>):vec4<i32> {
-  $B3: {
-    %9:vec4<bool> = eq %rhs, vec4<i32>(0i)
-    %10:vec4<bool> = eq %lhs, vec4<i32>(-2147483648i)
-    %11:vec4<bool> = eq %rhs, vec4<i32>(-1i)
-    %12:vec4<bool> = and %10, %11
-    %13:vec4<bool> = or %9, %12
-    %14:vec4<i32> = select %rhs, vec4<i32>(1i), %13
-    %15:vec4<i32> = let %14
-    %16:vec4<i32> = div %lhs, %15
-    %17:vec4<i32> = mul %16, %15
-    %18:vec4<i32> = sub %lhs, %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/statements/compound_assign/vector/or.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/or.wgsl.expected.ir.msl
index c8f7bf1..d4bea17 100644
--- a/test/tint/statements/compound_assign/vector/or.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/vector/or.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<i32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a | int4(2));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index e5358ab..ff61004 100644
--- 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
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<f32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a + 2.0f);
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index 6023992..cb7dad1 100644
--- a/test/tint/statements/compound_assign/vector/plus.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/vector/plus.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<i32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a + int4(2));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index 176b2ed..52cb114 100644
--- 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
@@ -1,28 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<i32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a << (uint4(2u) & uint4(31u)));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
-    %4:vec4<i32> = load %3
-    %5:vec4<u32> = and vec4<u32>(2u), vec4<u32>(31u)
-    %6:vec4<i32> = shl %4, %5
-    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/statements/compound_assign/vector/shift_right.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/shift_right.wgsl.expected.ir.msl
index d5163d3..40ea9f2 100644
--- 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
@@ -1,28 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<i32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a >> (uint4(2u) & uint4(31u)));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %3:ptr<storage, vec4<i32>, read_write> = access %v, 0u
-    %4:vec4<i32> = load %3
-    %5:vec4<u32> = and vec4<u32>(2u), vec4<u32>(31u)
-    %6:vec4<i32> = shr %4, %5
-    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/statements/compound_assign/vector/times-matrix.wgsl.expected.ir.msl b/test/tint/statements/compound_assign/vector/times-matrix.wgsl.expected.ir.msl
index 7b9ab58..1c0585e 100644
--- 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
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<f32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a * float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f)));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index bbaef43..dca40333 100644
--- 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
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  float4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<f32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a * 2.0f);
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index f77d642..fd71000 100644
--- a/test/tint/statements/compound_assign/vector/times.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/vector/times.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<i32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a * int4(2));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index 0f5c119..17f5e91 100644
--- a/test/tint/statements/compound_assign/vector/xor.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/vector/xor.wgsl.expected.ir.msl
@@ -1,27 +1,12 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S {
+  int4 a;
+};
+struct tint_module_vars_struct {
+  device S* v;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:vec4<i32> @offset(0)
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v).a = ((*tint_module_vars.v).a ^ int4(2));
 }
-
-$B1: {  # root
-  %v:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%foo = func():void {
-  $B2: {
-    %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
index e523a83..f62b9e2 100644
--- a/test/tint/statements/compound_assign/workgroup.wgsl.expected.ir.msl
+++ b/test/tint/statements/compound_assign/workgroup.wgsl.expected.ir.msl
@@ -1,26 +1,16 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  threadgroup int* a;
+  threadgroup float4* b;
+  threadgroup float2x2* c;
+};
 
-threadgroup int a;
-threadgroup float4 b;
-threadgroup float2x2 c;
-void foo() {
-  a = tint_div_i32(a, 2);
-  b = (b * float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f)));
-  c = (c * 2.0f);
-}
 int tint_div_i32(int lhs, int rhs) {
   return (lhs / select(rhs, 1, ((rhs == 0) | ((lhs == (-2147483647 - 1)) & (rhs == -1)))));
 }
-program_source:4:17: error: program scope variable must reside in constant address space
-threadgroup int a;
-                ^
-program_source:5:20: error: program scope variable must reside in constant address space
-threadgroup float4 b;
-                   ^
-program_source:6:22: error: program scope variable must reside in constant address space
-threadgroup float2x2 c;
-                     ^
-
+void foo(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.a) = tint_div_i32((*tint_module_vars.a), 2);
+  (*tint_module_vars.b) = ((*tint_module_vars.b) * float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f)));
+  (*tint_module_vars.c) = ((*tint_module_vars.c) * 2.0f);
+}
diff --git a/test/tint/statements/decrement/array_element.wgsl.expected.ir.msl b/test/tint/statements/decrement/array_element.wgsl.expected.ir.msl
index 3812675..b1b50e1 100644
--- a/test/tint/statements/decrement/array_element.wgsl.expected.ir.msl
+++ b/test/tint/statements/decrement/array_element.wgsl.expected.ir.msl
@@ -1,23 +1,21 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<storage, array<u32>, read_write> = var @binding_point(0, 0)
+struct tint_module_vars_struct {
+  device tint_array<uint, 1>* a;
+};
+
+void tint_symbol(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.a)[1] = ((*tint_module_vars.a)[1] - 1u);
 }
-
-%tint_symbol = func():void {
-  $B2: {
-    %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
index 83c21fd..06f3397 100644
--- a/test/tint/statements/decrement/complex.wgsl.expected.ir.msl
+++ b/test/tint/statements/decrement/complex.wgsl.expected.ir.msl
@@ -1,113 +1,65 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:array<vec4<i32>, 4> @offset(0)
-}
+struct S {
+  tint_array<int4, 4> a;
+};
+struct tint_module_vars_struct {
+  device tint_array<S, 1>* tint_symbol;
+  thread uint* v;
+};
 
-$B1: {  # root
-  %tint_symbol:ptr<storage, array<S>, read_write> = var @binding_point(0, 0)
-  %v:ptr<private, u32, read_write> = var
+int idx1(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v) = ((*tint_module_vars.v) - 1u);
+  return 1;
 }
-
-%idx1 = func():i32 {
-  $B2: {
-    %4:u32 = load %v
-    %5:u32 = sub %4, 1u
-    store %v, %5
-    ret 1i
-  }
+int idx2(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v) = ((*tint_module_vars.v) - 1u);
+  return 2;
 }
-%idx2 = func():i32 {
-  $B3: {
-    %7:u32 = load %v
-    %8:u32 = sub %7, 1u
-    store %v, %8
-    ret 2i
-  }
+int idx3(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v) = ((*tint_module_vars.v) - 1u);
+  return 3;
 }
-%idx3 = func():i32 {
-  $B4: {
-    %10:u32 = load %v
-    %11:u32 = sub %10, 1u
-    store %v, %11
-    ret 3i
-  }
+int idx4(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v) = ((*tint_module_vars.v) - 1u);
+  return 4;
 }
-%idx4 = func():i32 {
-  $B5: {
-    %13:u32 = load %v
-    %14:u32 = sub %13, 1u
-    store %v, %14
-    ret 4i
-  }
+int idx5(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v) = ((*tint_module_vars.v) - 1u);
+  return 0;
 }
-%idx5 = func():i32 {
-  $B6: {
-    %16:u32 = load %v
-    %17:u32 = sub %16, 1u
-    store %v, %17
-    ret 0i
-  }
+int idx6(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v) = ((*tint_module_vars.v) - 1u);
+  return 2;
 }
-%idx6 = func():i32 {
-  $B7: {
-    %19:u32 = load %v
-    %20:u32 = sub %19, 1u
-    store %v, %20
-    ret 2i
-  }
-}
-%tint_symbol_1 = func():void {
-  $B8: {
-    loop [i: $B9, b: $B10, c: $B11] {  # loop_1
-      $B9: {  # initializer
-        %22:i32 = call %idx1
-        %23:i32 = let %22
-        %24:i32 = call %idx2
-        %25:ptr<storage, vec4<i32>, read_write> = access %tint_symbol, %23, 0u, %24
-        %26:ptr<storage, vec4<i32>, read_write> = let %25
-        %27:i32 = call %idx3
-        %28:i32 = let %27
-        %29:i32 = load_vector_element %26, %28
-        %30:i32 = sub %29, 1i
-        store_vector_element %26, %28, %30
-        next_iteration  # -> $B10
+void tint_symbol_1(tint_module_vars_struct tint_module_vars) {
+  {
+    int const v_1 = idx1(tint_module_vars);
+    device int4* const v_2 = (&(*tint_module_vars.tint_symbol)[v_1].a[idx2(tint_module_vars)]);
+    int const v_3 = idx3(tint_module_vars);
+    (*v_2)[v_3] = ((*v_2)[v_3] - 1);
+    while(true) {
+      if (((*tint_module_vars.v) < 10u)) {
+      } else {
+        break;
       }
-      $B10: {  # body
-        %31:u32 = load %v
-        %32:bool = lt %31, 10u
-        if %32 [t: $B12, f: $B13] {  # if_1
-          $B12: {  # true
-            exit_if  # if_1
-          }
-          $B13: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        continue  # -> $B11
-      }
-      $B11: {  # continuing
-        %33:i32 = call %idx4
-        %34:i32 = let %33
-        %35:i32 = call %idx5
-        %36:ptr<storage, vec4<i32>, read_write> = access %tint_symbol, %34, 0u, %35
-        %37:ptr<storage, vec4<i32>, read_write> = let %36
-        %38:i32 = call %idx6
-        %39:i32 = let %38
-        %40:i32 = load_vector_element %37, %39
-        %41:i32 = sub %40, 1i
-        store_vector_element %37, %39, %41
-        next_iteration  # -> $B10
-      }
+      int const v_4 = idx4(tint_module_vars);
+      device int4* const v_5 = (&(*tint_module_vars.tint_symbol)[v_4].a[idx5(tint_module_vars)]);
+      int const v_6 = idx6(tint_module_vars);
+      (*v_5)[v_6] = ((*v_5)[v_6] - 1);
+      continue;
     }
-    ret
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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
index 238e237..d52fe70 100644
--- a/test/tint/statements/decrement/for_loop_continuing.wgsl.expected.ir.msl
+++ b/test/tint/statements/decrement/for_loop_continuing.wgsl.expected.ir.msl
@@ -1,40 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device uint* i;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %i:ptr<storage, u32, read_write> = var @binding_point(0, 0)
-}
-
-%tint_symbol = func():void {
-  $B2: {
-    loop [b: $B3, c: $B4] {  # loop_1
-      $B3: {  # body
-        %3:u32 = load %i
-        %4:bool = lt %3, 10u
-        if %4 [t: $B5, f: $B6] {  # if_1
-          $B5: {  # true
-            exit_if  # if_1
-          }
-          $B6: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        continue  # -> $B4
+void tint_symbol(tint_module_vars_struct tint_module_vars) {
+  {
+    while(true) {
+      if (((*tint_module_vars.i) < 10u)) {
+      } else {
+        break;
       }
-      $B4: {  # continuing
-        %5:u32 = load %i
-        %6:u32 = sub %5, 1u
-        store %i, %6
-        next_iteration  # -> $B3
-      }
+      (*tint_module_vars.i) = ((*tint_module_vars.i) - 1u);
+      continue;
     }
-    ret
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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
index 1288b7a..5127afa 100644
--- a/test/tint/statements/decrement/for_loop_initializer.wgsl.expected.ir.msl
+++ b/test/tint/statements/decrement/for_loop_initializer.wgsl.expected.ir.msl
@@ -1,40 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device uint* i;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %i:ptr<storage, u32, read_write> = var @binding_point(0, 0)
-}
-
-%tint_symbol = func():void {
-  $B2: {
-    loop [i: $B3, b: $B4] {  # loop_1
-      $B3: {  # initializer
-        %3:u32 = load %i
-        %4:u32 = sub %3, 1u
-        store %i, %4
-        next_iteration  # -> $B4
+void tint_symbol(tint_module_vars_struct tint_module_vars) {
+  {
+    (*tint_module_vars.i) = ((*tint_module_vars.i) - 1u);
+    while(true) {
+      if (((*tint_module_vars.i) < 10u)) {
+      } else {
+        break;
       }
-      $B4: {  # body
-        %5:u32 = load %i
-        %6:bool = lt %5, 10u
-        if %6 [t: $B5, f: $B6] {  # if_1
-          $B5: {  # true
-            exit_if  # if_1
-          }
-          $B6: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        continue  # -> $B7
-      }
+      continue;
     }
-    ret
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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
index 91c8fa6..ca44ed3 100644
--- a/test/tint/statements/decrement/private.wgsl.expected.ir.msl
+++ b/test/tint/statements/decrement/private.wgsl.expected.ir.msl
@@ -5,5 +5,5 @@
 };
 
 void tint_symbol(tint_module_vars_struct tint_module_vars) {
-  tint_module_vars.i = (tint_module_vars.i - 1);
+  (*tint_module_vars.i) = ((*tint_module_vars.i) - 1);
 }
diff --git a/test/tint/statements/decrement/storage.wgsl.expected.ir.msl b/test/tint/statements/decrement/storage.wgsl.expected.ir.msl
index 94432c9..afe26c1 100644
--- a/test/tint/statements/decrement/storage.wgsl.expected.ir.msl
+++ b/test/tint/statements/decrement/storage.wgsl.expected.ir.msl
@@ -5,5 +5,5 @@
 };
 
 void tint_symbol(tint_module_vars_struct tint_module_vars) {
-  tint_module_vars.i = (tint_module_vars.i - 1u);
+  (*tint_module_vars.i) = ((*tint_module_vars.i) - 1u);
 }
diff --git a/test/tint/statements/decrement/vector_component.wgsl.expected.ir.msl b/test/tint/statements/decrement/vector_component.wgsl.expected.ir.msl
index 86fdc0f..0504684 100644
--- a/test/tint/statements/decrement/vector_component.wgsl.expected.ir.msl
+++ b/test/tint/statements/decrement/vector_component.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 void tint_symbol(tint_module_vars_struct tint_module_vars) {
-  tint_module_vars.a[1] = (tint_module_vars.a[1] - 1u);
-  tint_module_vars.a[2u] = (tint_module_vars.a[2u] - 1u);
+  (*tint_module_vars.a)[1] = ((*tint_module_vars.a)[1] - 1u);
+  (*tint_module_vars.a)[2u] = ((*tint_module_vars.a)[2u] - 1u);
 }
diff --git a/test/tint/statements/decrement/workgroup.wgsl.expected.ir.msl b/test/tint/statements/decrement/workgroup.wgsl.expected.ir.msl
index d1bc058..2a0a0ef 100644
--- a/test/tint/statements/decrement/workgroup.wgsl.expected.ir.msl
+++ b/test/tint/statements/decrement/workgroup.wgsl.expected.ir.msl
@@ -5,5 +5,5 @@
 };
 
 void tint_symbol(tint_module_vars_struct tint_module_vars) {
-  tint_module_vars.i = (tint_module_vars.i - 1);
+  (*tint_module_vars.i) = ((*tint_module_vars.i) - 1);
 }
diff --git a/test/tint/statements/discard/discard_return.wgsl.expected.ir.msl b/test/tint/statements/discard/discard_return.wgsl.expected.ir.msl
index 2e04a91..68df997 100644
--- a/test/tint/statements/discard/discard_return.wgsl.expected.ir.msl
+++ b/test/tint/statements/discard/discard_return.wgsl.expected.ir.msl
@@ -1,13 +1,9 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* continue_execution;
+};
 
-thread bool continue_execution = true;
-void f() {
-  continue_execution = false;
+void f(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.continue_execution) = false;
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool continue_execution = true;
-            ^
-
diff --git a/test/tint/statements/discard/helper_functions.wgsl.expected.ir.msl b/test/tint/statements/discard/helper_functions.wgsl.expected.ir.msl
index 3c42091..80d7ee1 100644
--- a/test/tint/statements/discard/helper_functions.wgsl.expected.ir.msl
+++ b/test/tint/statements/discard/helper_functions.wgsl.expected.ir.msl
@@ -1,57 +1,28 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* non_uniform_global;
+  device float* output;
+  thread bool* continue_execution;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
-  %continue_execution:ptr<private, bool, read_write> = var, true
-}
-
-%foo = func():void {
-  $B2: {
-    %5:i32 = load %non_uniform_global
-    %6:bool = lt %5, 0i
-    if %6 [t: $B3] {  # if_1
-      $B3: {  # true
-        store %continue_execution, false
-        exit_if  # if_1
-      }
-    }
-    ret
+void foo(tint_module_vars_struct tint_module_vars) {
+  if (((*tint_module_vars.non_uniform_global) < 0)) {
+    (*tint_module_vars.continue_execution) = false;
   }
 }
-%bar = func():void {
-  $B4: {
-    %8:f32 = dpdx 1.0f
-    %9:f32 = let %8
-    %10:bool = load %continue_execution
-    if %10 [t: $B5] {  # if_2
-      $B5: {  # true
-        store %output, %9
-        exit_if  # if_2
-      }
-    }
-    ret
+void bar(tint_module_vars_struct tint_module_vars) {
+  float const v = dfdx(1.0f);
+  if ((*tint_module_vars.continue_execution)) {
+    (*tint_module_vars.output) = v;
   }
 }
-%tint_symbol = @fragment func():void {
-  $B6: {
-    %12:void = call %foo
-    %13:void = call %bar
-    %14:bool = load %continue_execution
-    %15:bool = eq %14, false
-    if %15 [t: $B7] {  # if_3
-      $B7: {  # true
-        terminate_invocation
-      }
-    }
-    ret
+fragment void tint_symbol(device int* non_uniform_global [[buffer(0)]], device float* output [[buffer(1)]]) {
+  thread bool continue_execution = true;
+  tint_module_vars_struct const tint_module_vars = {.non_uniform_global=non_uniform_global, .output=output, .continue_execution=(&continue_execution)};
+  foo(tint_module_vars);
+  bar(tint_module_vars);
+  if (!((*tint_module_vars.continue_execution))) {
+    discard_fragment();
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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/if_discard_return.wgsl.expected.ir.msl b/test/tint/statements/discard/if_discard_return.wgsl.expected.ir.msl
index 361b224..07a083a 100644
--- a/test/tint/statements/discard/if_discard_return.wgsl.expected.ir.msl
+++ b/test/tint/statements/discard/if_discard_return.wgsl.expected.ir.msl
@@ -1,16 +1,12 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* continue_execution;
+};
 
-thread bool continue_execution = true;
-void f(bool cond) {
+void f(bool cond, tint_module_vars_struct tint_module_vars) {
   if (cond) {
-    continue_execution = false;
+    (*tint_module_vars.continue_execution) = false;
     return;
   }
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool continue_execution = true;
-            ^
-
diff --git a/test/tint/statements/discard/loop_discard_return.wgsl.expected.ir.msl b/test/tint/statements/discard/loop_discard_return.wgsl.expected.ir.msl
index e9dfc0a..46bea24 100644
--- a/test/tint/statements/discard/loop_discard_return.wgsl.expected.ir.msl
+++ b/test/tint/statements/discard/loop_discard_return.wgsl.expected.ir.msl
@@ -1,19 +1,15 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* continue_execution;
+};
 
-thread bool continue_execution = true;
-void f() {
+void f(tint_module_vars_struct tint_module_vars) {
   {
     while(true) {
-      continue_execution = false;
+      (*tint_module_vars.continue_execution) = false;
       return;
     }
   }
   /* unreachable */
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool continue_execution = true;
-            ^
-
diff --git a/test/tint/statements/discard/multiple_returns.wgsl.expected.ir.msl b/test/tint/statements/discard/multiple_returns.wgsl.expected.ir.msl
index b5636b4..30ff5e9 100644
--- a/test/tint/statements/discard/multiple_returns.wgsl.expected.ir.msl
+++ b/test/tint/statements/discard/multiple_returns.wgsl.expected.ir.msl
@@ -1,100 +1,47 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* non_uniform_global;
+  device float* output;
+  thread bool* continue_execution;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
-  %continue_execution:ptr<private, bool, read_write> = var, true
-}
-
-%tint_symbol = @fragment func():void {
-  $B2: {
-    %5:i32 = load %non_uniform_global
-    %6:bool = lt %5, 0i
-    if %6 [t: $B3] {  # if_1
-      $B3: {  # true
-        store %continue_execution, false
-        exit_if  # if_1
-      }
-    }
-    %7:f32 = dpdx 1.0f
-    %8:f32 = let %7
-    %9:bool = load %continue_execution
-    if %9 [t: $B4] {  # if_2
-      $B4: {  # true
-        store %output, %8
-        exit_if  # if_2
-      }
-    }
-    %10:f32 = load %output
-    %11:bool = lt %10, 0.0f
-    if %11 [t: $B5] {  # if_3
-      $B5: {  # true
-        %i:ptr<function, i32, read_write> = var, 0i
-        loop [b: $B6, c: $B7] {  # loop_1
-          $B6: {  # body
-            %13:f32 = load %output
-            %14:f32 = let %13
-            %15:i32 = load %i
-            %16:f32 = convert %15
-            %17:bool = gt %14, %16
-            if %17 [t: $B8] {  # if_4
-              $B8: {  # true
-                %18:i32 = load %i
-                %19:f32 = convert %18
-                %20:f32 = let %19
-                %21:bool = load %continue_execution
-                if %21 [t: $B9] {  # if_5
-                  $B9: {  # true
-                    store %output, %20
-                    exit_if  # if_5
-                  }
-                }
-                %22:bool = load %continue_execution
-                %23:bool = eq %22, false
-                if %23 [t: $B10] {  # if_6
-                  $B10: {  # true
-                    terminate_invocation
-                  }
-                }
-                ret
-              }
-            }
-            continue  # -> $B7
+fragment void tint_symbol(device int* non_uniform_global [[buffer(0)]], device float* output [[buffer(1)]]) {
+  thread bool continue_execution = true;
+  tint_module_vars_struct const tint_module_vars = {.non_uniform_global=non_uniform_global, .output=output, .continue_execution=(&continue_execution)};
+  if (((*tint_module_vars.non_uniform_global) < 0)) {
+    (*tint_module_vars.continue_execution) = false;
+  }
+  float const v = dfdx(1.0f);
+  if ((*tint_module_vars.continue_execution)) {
+    (*tint_module_vars.output) = v;
+  }
+  if (((*tint_module_vars.output) < 0.0f)) {
+    int i = 0;
+    {
+      while(true) {
+        float const v_1 = (*tint_module_vars.output);
+        if ((v_1 > float(i))) {
+          float const v_2 = float(i);
+          if ((*tint_module_vars.continue_execution)) {
+            (*tint_module_vars.output) = v_2;
           }
-          $B7: {  # continuing
-            %24:i32 = load %i
-            %25:i32 = add %24, 1i
-            store %i, %25
-            %26:i32 = load %i
-            %27:bool = eq %26, 5i
-            break_if %27  # -> [t: exit_loop loop_1, f: $B6]
+          if (!((*tint_module_vars.continue_execution))) {
+            discard_fragment();
           }
+          return;
         }
-        %28:bool = load %continue_execution
-        %29:bool = eq %28, false
-        if %29 [t: $B11] {  # if_7
-          $B11: {  # true
-            terminate_invocation
-          }
-        }
-        ret
+        i = (i + 1);
+        if (i == 5) { break; }
+        continue;
       }
     }
-    %30:bool = load %continue_execution
-    %31:bool = eq %30, false
-    if %31 [t: $B12] {  # if_8
-      $B12: {  # true
-        terminate_invocation
-      }
+    if (!((*tint_module_vars.continue_execution))) {
+      discard_fragment();
     }
-    ret
+    return;
+  }
+  if (!((*tint_module_vars.continue_execution))) {
+    discard_fragment();
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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
index 0e324d8..6659eeb 100644
--- a/test/tint/statements/discard/nested_return.wgsl.expected.ir.msl
+++ b/test/tint/statements/discard/nested_return.wgsl.expected.ir.msl
@@ -1,35 +1,17 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* non_uniform_global;
+  thread bool* continue_execution;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %non_uniform_global:ptr<storage, i32, read_write> = var @binding_point(0, 0)
-  %continue_execution:ptr<private, bool, read_write> = var, true
-}
-
-%tint_symbol = @fragment func():void {
-  $B2: {
-    %4:i32 = load %non_uniform_global
-    %5:bool = lt %4, 0i
-    if %5 [t: $B3] {  # if_1
-      $B3: {  # true
-        store %continue_execution, false
-        exit_if  # if_1
-      }
-    }
-    %6:bool = load %continue_execution
-    %7:bool = eq %6, false
-    if %7 [t: $B4] {  # if_2
-      $B4: {  # true
-        terminate_invocation
-      }
-    }
-    ret
+fragment void tint_symbol(device int* non_uniform_global [[buffer(0)]]) {
+  thread bool continue_execution = true;
+  tint_module_vars_struct const tint_module_vars = {.non_uniform_global=non_uniform_global, .continue_execution=(&continue_execution)};
+  if (((*tint_module_vars.non_uniform_global) < 0)) {
+    (*tint_module_vars.continue_execution) = false;
+  }
+  if (!((*tint_module_vars.continue_execution))) {
+    discard_fragment();
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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
index b3ed894..4437f6f 100644
--- a/test/tint/statements/discard/non_uniform.wgsl.expected.ir.msl
+++ b/test/tint/statements/discard/non_uniform.wgsl.expected.ir.msl
@@ -1,45 +1,22 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device int* non_uniform_global;
+  device float* output;
+  thread bool* continue_execution;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # 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)
-  %continue_execution:ptr<private, bool, read_write> = var, true
-}
-
-%tint_symbol = @fragment func():void {
-  $B2: {
-    %5:i32 = load %non_uniform_global
-    %6:bool = lt %5, 0i
-    if %6 [t: $B3] {  # if_1
-      $B3: {  # true
-        store %continue_execution, false
-        exit_if  # if_1
-      }
-    }
-    %7:f32 = dpdx 1.0f
-    %8:f32 = let %7
-    %9:bool = load %continue_execution
-    if %9 [t: $B4] {  # if_2
-      $B4: {  # true
-        store %output, %8
-        exit_if  # if_2
-      }
-    }
-    %10:bool = load %continue_execution
-    %11:bool = eq %10, false
-    if %11 [t: $B5] {  # if_3
-      $B5: {  # true
-        terminate_invocation
-      }
-    }
-    ret
+fragment void tint_symbol(device int* non_uniform_global [[buffer(0)]], device float* output [[buffer(1)]]) {
+  thread bool continue_execution = true;
+  tint_module_vars_struct const tint_module_vars = {.non_uniform_global=non_uniform_global, .output=output, .continue_execution=(&continue_execution)};
+  if (((*tint_module_vars.non_uniform_global) < 0)) {
+    (*tint_module_vars.continue_execution) = false;
+  }
+  float const v = dfdx(1.0f);
+  if ((*tint_module_vars.continue_execution)) {
+    (*tint_module_vars.output) = v;
+  }
+  if (!((*tint_module_vars.continue_execution))) {
+    discard_fragment();
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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
index 9795a66..f61d09c 100644
--- a/test/tint/statements/increment/array_element.wgsl.expected.ir.msl
+++ b/test/tint/statements/increment/array_element.wgsl.expected.ir.msl
@@ -1,23 +1,21 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %a:ptr<storage, array<u32>, read_write> = var @binding_point(0, 0)
+struct tint_module_vars_struct {
+  device tint_array<uint, 1>* a;
+};
+
+void tint_symbol(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.a)[1] = ((*tint_module_vars.a)[1] + 1u);
 }
-
-%tint_symbol = func():void {
-  $B2: {
-    %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
index da42c84..309a3b0 100644
--- a/test/tint/statements/increment/complex.wgsl.expected.ir.msl
+++ b/test/tint/statements/increment/complex.wgsl.expected.ir.msl
@@ -1,113 +1,65 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(16) {
-  a:array<vec4<i32>, 4> @offset(0)
-}
+struct S {
+  tint_array<int4, 4> a;
+};
+struct tint_module_vars_struct {
+  device tint_array<S, 1>* tint_symbol;
+  thread uint* v;
+};
 
-$B1: {  # root
-  %tint_symbol:ptr<storage, array<S>, read_write> = var @binding_point(0, 0)
-  %v:ptr<private, u32, read_write> = var
+int idx1(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v) = ((*tint_module_vars.v) + 1u);
+  return 1;
 }
-
-%idx1 = func():i32 {
-  $B2: {
-    %4:u32 = load %v
-    %5:u32 = add %4, 1u
-    store %v, %5
-    ret 1i
-  }
+int idx2(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v) = ((*tint_module_vars.v) + 1u);
+  return 2;
 }
-%idx2 = func():i32 {
-  $B3: {
-    %7:u32 = load %v
-    %8:u32 = add %7, 1u
-    store %v, %8
-    ret 2i
-  }
+int idx3(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v) = ((*tint_module_vars.v) + 1u);
+  return 3;
 }
-%idx3 = func():i32 {
-  $B4: {
-    %10:u32 = load %v
-    %11:u32 = add %10, 1u
-    store %v, %11
-    ret 3i
-  }
+int idx4(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v) = ((*tint_module_vars.v) + 1u);
+  return 4;
 }
-%idx4 = func():i32 {
-  $B5: {
-    %13:u32 = load %v
-    %14:u32 = add %13, 1u
-    store %v, %14
-    ret 4i
-  }
+int idx5(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v) = ((*tint_module_vars.v) + 1u);
+  return 0;
 }
-%idx5 = func():i32 {
-  $B6: {
-    %16:u32 = load %v
-    %17:u32 = add %16, 1u
-    store %v, %17
-    ret 0i
-  }
+int idx6(tint_module_vars_struct tint_module_vars) {
+  (*tint_module_vars.v) = ((*tint_module_vars.v) + 1u);
+  return 2;
 }
-%idx6 = func():i32 {
-  $B7: {
-    %19:u32 = load %v
-    %20:u32 = add %19, 1u
-    store %v, %20
-    ret 2i
-  }
-}
-%tint_symbol_1 = func():void {
-  $B8: {
-    loop [i: $B9, b: $B10, c: $B11] {  # loop_1
-      $B9: {  # initializer
-        %22:i32 = call %idx1
-        %23:i32 = let %22
-        %24:i32 = call %idx2
-        %25:ptr<storage, vec4<i32>, read_write> = access %tint_symbol, %23, 0u, %24
-        %26:ptr<storage, vec4<i32>, read_write> = let %25
-        %27:i32 = call %idx3
-        %28:i32 = let %27
-        %29:i32 = load_vector_element %26, %28
-        %30:i32 = add %29, 1i
-        store_vector_element %26, %28, %30
-        next_iteration  # -> $B10
+void tint_symbol_1(tint_module_vars_struct tint_module_vars) {
+  {
+    int const v_1 = idx1(tint_module_vars);
+    device int4* const v_2 = (&(*tint_module_vars.tint_symbol)[v_1].a[idx2(tint_module_vars)]);
+    int const v_3 = idx3(tint_module_vars);
+    (*v_2)[v_3] = ((*v_2)[v_3] + 1);
+    while(true) {
+      if (((*tint_module_vars.v) < 10u)) {
+      } else {
+        break;
       }
-      $B10: {  # body
-        %31:u32 = load %v
-        %32:bool = lt %31, 10u
-        if %32 [t: $B12, f: $B13] {  # if_1
-          $B12: {  # true
-            exit_if  # if_1
-          }
-          $B13: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        continue  # -> $B11
-      }
-      $B11: {  # continuing
-        %33:i32 = call %idx4
-        %34:i32 = let %33
-        %35:i32 = call %idx5
-        %36:ptr<storage, vec4<i32>, read_write> = access %tint_symbol, %34, 0u, %35
-        %37:ptr<storage, vec4<i32>, read_write> = let %36
-        %38:i32 = call %idx6
-        %39:i32 = let %38
-        %40:i32 = load_vector_element %37, %39
-        %41:i32 = add %40, 1i
-        store_vector_element %37, %39, %41
-        next_iteration  # -> $B10
-      }
+      int const v_4 = idx4(tint_module_vars);
+      device int4* const v_5 = (&(*tint_module_vars.tint_symbol)[v_4].a[idx5(tint_module_vars)]);
+      int const v_6 = idx6(tint_module_vars);
+      (*v_5)[v_6] = ((*v_5)[v_6] + 1);
+      continue;
     }
-    ret
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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
index f54b041..d286201 100644
--- a/test/tint/statements/increment/for_loop_continuing.wgsl.expected.ir.msl
+++ b/test/tint/statements/increment/for_loop_continuing.wgsl.expected.ir.msl
@@ -1,40 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device uint* i;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %i:ptr<storage, u32, read_write> = var @binding_point(0, 0)
-}
-
-%tint_symbol = func():void {
-  $B2: {
-    loop [b: $B3, c: $B4] {  # loop_1
-      $B3: {  # body
-        %3:u32 = load %i
-        %4:bool = lt %3, 10u
-        if %4 [t: $B5, f: $B6] {  # if_1
-          $B5: {  # true
-            exit_if  # if_1
-          }
-          $B6: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        continue  # -> $B4
+void tint_symbol(tint_module_vars_struct tint_module_vars) {
+  {
+    while(true) {
+      if (((*tint_module_vars.i) < 10u)) {
+      } else {
+        break;
       }
-      $B4: {  # continuing
-        %5:u32 = load %i
-        %6:u32 = add %5, 1u
-        store %i, %6
-        next_iteration  # -> $B3
-      }
+      (*tint_module_vars.i) = ((*tint_module_vars.i) + 1u);
+      continue;
     }
-    ret
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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
index f24a049..01c62af 100644
--- a/test/tint/statements/increment/for_loop_initializer.wgsl.expected.ir.msl
+++ b/test/tint/statements/increment/for_loop_initializer.wgsl.expected.ir.msl
@@ -1,40 +1,18 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  device uint* i;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %i:ptr<storage, u32, read_write> = var @binding_point(0, 0)
-}
-
-%tint_symbol = func():void {
-  $B2: {
-    loop [i: $B3, b: $B4] {  # loop_1
-      $B3: {  # initializer
-        %3:u32 = load %i
-        %4:u32 = add %3, 1u
-        store %i, %4
-        next_iteration  # -> $B4
+void tint_symbol(tint_module_vars_struct tint_module_vars) {
+  {
+    (*tint_module_vars.i) = ((*tint_module_vars.i) + 1u);
+    while(true) {
+      if (((*tint_module_vars.i) < 10u)) {
+      } else {
+        break;
       }
-      $B4: {  # body
-        %5:u32 = load %i
-        %6:bool = lt %5, 10u
-        if %6 [t: $B5, f: $B6] {  # if_1
-          $B5: {  # true
-            exit_if  # if_1
-          }
-          $B6: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        continue  # -> $B7
-      }
+      continue;
     }
-    ret
   }
 }
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this 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
index 245468b..c04def4 100644
--- a/test/tint/statements/increment/private.wgsl.expected.ir.msl
+++ b/test/tint/statements/increment/private.wgsl.expected.ir.msl
@@ -5,5 +5,5 @@
 };
 
 void tint_symbol(tint_module_vars_struct tint_module_vars) {
-  tint_module_vars.i = (tint_module_vars.i + 1);
+  (*tint_module_vars.i) = ((*tint_module_vars.i) + 1);
 }
diff --git a/test/tint/statements/increment/storage.wgsl.expected.ir.msl b/test/tint/statements/increment/storage.wgsl.expected.ir.msl
index b963109..e4d31d7 100644
--- a/test/tint/statements/increment/storage.wgsl.expected.ir.msl
+++ b/test/tint/statements/increment/storage.wgsl.expected.ir.msl
@@ -5,5 +5,5 @@
 };
 
 void tint_symbol(tint_module_vars_struct tint_module_vars) {
-  tint_module_vars.i = (tint_module_vars.i + 1u);
+  (*tint_module_vars.i) = ((*tint_module_vars.i) + 1u);
 }
diff --git a/test/tint/statements/increment/vector_component.wgsl.expected.ir.msl b/test/tint/statements/increment/vector_component.wgsl.expected.ir.msl
index ae047c7..dda8936 100644
--- a/test/tint/statements/increment/vector_component.wgsl.expected.ir.msl
+++ b/test/tint/statements/increment/vector_component.wgsl.expected.ir.msl
@@ -5,6 +5,6 @@
 };
 
 void tint_symbol(tint_module_vars_struct tint_module_vars) {
-  tint_module_vars.a[1] = (tint_module_vars.a[1] + 1u);
-  tint_module_vars.a[2u] = (tint_module_vars.a[2u] + 1u);
+  (*tint_module_vars.a)[1] = ((*tint_module_vars.a)[1] + 1u);
+  (*tint_module_vars.a)[2u] = ((*tint_module_vars.a)[2u] + 1u);
 }
diff --git a/test/tint/statements/increment/workgroup.wgsl.expected.ir.msl b/test/tint/statements/increment/workgroup.wgsl.expected.ir.msl
index 39fbfd2..fbe6b15 100644
--- a/test/tint/statements/increment/workgroup.wgsl.expected.ir.msl
+++ b/test/tint/statements/increment/workgroup.wgsl.expected.ir.msl
@@ -5,5 +5,5 @@
 };
 
 void tint_symbol(tint_module_vars_struct tint_module_vars) {
-  tint_module_vars.i = (tint_module_vars.i + 1);
+  (*tint_module_vars.i) = ((*tint_module_vars.i) + 1);
 }
diff --git a/test/tint/types/buffers/storage.wgsl.expected.ir.msl b/test/tint/types/buffers/storage.wgsl.expected.ir.msl
index be7c43f..961dc23 100644
--- a/test/tint/types/buffers/storage.wgsl.expected.ir.msl
+++ b/test/tint/types/buffers/storage.wgsl.expected.ir.msl
@@ -1,22 +1,22 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+template<typename T, size_t N>
+struct tint_array {
+  const constant T& operator[](size_t i) const constant { return elements[i]; }
+  device T& operator[](size_t i) device { return elements[i]; }
+  const device T& operator[](size_t i) const device { return elements[i]; }
+  thread T& operator[](size_t i) thread { return elements[i]; }
+  const thread T& operator[](size_t i) const thread { return elements[i]; }
+  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
+  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
+  T elements[N];
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %weights:ptr<storage, array<f32>, read> = var @binding_point(0, 0)
+struct tint_module_vars_struct {
+  const device tint_array<float, 1>* weights;
+};
+
+fragment void tint_symbol(const device tint_array<float, 1>* weights [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.weights=weights};
+  float a = (*tint_module_vars.weights)[0];
 }
-
-%tint_symbol = @fragment func():void {
-  $B2: {
-    %3:ptr<storage, f32, read> = access %weights, 0i
-    %4:f32 = load %3
-    %a:ptr<function, f32, read_write> = var, %4
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix 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/buffers/uniform.wgsl.expected.ir.msl b/test/tint/types/buffers/uniform.wgsl.expected.ir.msl
index 884bf09..8587b5a 100644
--- a/test/tint/types/buffers/uniform.wgsl.expected.ir.msl
+++ b/test/tint/types/buffers/uniform.wgsl.expected.ir.msl
@@ -1,21 +1,10 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct tint_module_vars_struct {
+  const constant float2* weights;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: $B1: {  # root
-  %weights:ptr<uniform, vec2<f32>, read> = var @binding_point(0, 0)
+fragment void tint_symbol(const constant float2* weights [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.weights=weights};
+  float a = (*tint_module_vars.weights)[0];
 }
-
-%tint_symbol = @fragment func():void {
-  $B2: {
-    %3:f32 = load_vector_element %weights, 0i
-    %a:ptr<function, f32, read_write> = var, %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/types/function_scope_declarations.wgsl.expected.ir.msl b/test/tint/types/function_scope_declarations.wgsl.expected.ir.msl
index 11a6ade..dbda5ce 100644
--- a/test/tint/types/function_scope_declarations.wgsl.expected.ir.msl
+++ b/test/tint/types/function_scope_declarations.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -39,17 +37,7 @@
   tint_array<float, 4> const arr_let = tint_array<float, 4>{};
   S struct_var = S{};
   S const struct_let = S{};
-  thread float* const ptr_f32 = f32_var;
-  thread float4* const ptr_vec = v4f32_var;
-  thread tint_array<float, 4>* const ptr_arr = arr_var;
+  thread float* const ptr_f32 = (&f32_var);
+  thread float4* const ptr_vec = (&v4f32_var);
+  thread tint_array<float, 4>* const ptr_arr = (&arr_var);
 }
-program_source:40:23: error: cannot initialize a variable of type 'float *const' with an lvalue of type 'float'
-  thread float* const ptr_f32 = f32_var;
-                      ^         ~~~~~~~
-program_source:41:24: error: cannot initialize a variable of type 'float4 *const' with an lvalue of type 'float4' (vector of 4 'float' values)
-  thread float4* const ptr_vec = v4f32_var;
-                       ^         ~~~~~~~~~
-program_source:42:38: error: no viable conversion from 'tint_array<float, 4>' to 'tint_array<float, 4> *const'
-  thread tint_array<float, 4>* const ptr_arr = arr_var;
-                                     ^         ~~~~~~~
-
diff --git a/test/tint/types/module_scope_private_initializers.wgsl.expected.ir.msl b/test/tint/types/module_scope_private_initializers.wgsl.expected.ir.msl
index 7e87012..127fbd6 100644
--- a/test/tint/types/module_scope_private_initializers.wgsl.expected.ir.msl
+++ b/test/tint/types/module_scope_private_initializers.wgsl.expected.ir.msl
@@ -1,20 +1,13 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float* a;
+  thread float* b;
+};
 
-thread float a = 1.0f;
-thread float b = 0.0f;
 kernel void tint_symbol() {
-  float const x = (a + b);
+  thread float a = 1.0f;
+  thread float b = 0.0f;
+  tint_module_vars_struct const tint_module_vars = {.a=(&a), .b=(&b)};
+  float const x = ((*tint_module_vars.a) + (*tint_module_vars.b));
 }
-program_source:4:14: error: program scope variable must reside in constant address space
-thread float a = 1.0f;
-             ^
-program_source:5:14: error: program scope variable must reside in constant address space
-thread float b = 0.0f;
-             ^
-program_source:7:15: warning: unused variable 'x' [-Wunused-variable]
-  float const x = (a + b);
-              ^
-
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
index 3487698..0daa2b2 100644
--- a/test/tint/types/module_scope_var_conversions.wgsl.expected.ir.msl
+++ b/test/tint/types/module_scope_var_conversions.wgsl.expected.ir.msl
@@ -1,108 +1,68 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread bool* bool_var1;
+  thread bool* bool_var2;
+  thread bool* bool_var3;
+  thread int* i32_var1;
+  thread int* i32_var2;
+  thread int* i32_var3;
+  thread uint* u32_var1;
+  thread uint* u32_var2;
+  thread uint* u32_var3;
+  thread bool3* v3bool_var1;
+  thread bool3* v3bool_var2;
+  thread bool3* v3bool_var3;
+  thread int3* v3i32_var1;
+  thread int3* v3i32_var2;
+  thread int3* v3i32_var3;
+  thread uint3* v3u32_var1;
+  thread uint3* v3u32_var2;
+  thread uint3* v3u32_var3;
+  thread bool3* v3bool_var4;
+  thread bool4* v4bool_var5;
+};
 
-thread bool bool_var1 = true;
-thread bool bool_var2 = true;
-thread bool bool_var3 = true;
-thread int i32_var1 = 1;
-thread int i32_var2 = 1;
-thread int i32_var3 = 1;
-thread uint u32_var1 = 1u;
-thread uint u32_var2 = 1u;
-thread uint u32_var3 = 1u;
-thread bool3 v3bool_var1 = bool3(true);
-thread bool3 v3bool_var2 = bool3(true);
-thread bool3 v3bool_var3 = bool3(true);
-thread int3 v3i32_var1 = int3(1);
-thread int3 v3i32_var2 = int3(1);
-thread int3 v3i32_var3 = int3(1);
-thread uint3 v3u32_var1 = uint3(1u);
-thread uint3 v3u32_var2 = uint3(1u);
-thread uint3 v3u32_var3 = uint3(1u);
-thread bool3 v3bool_var4 = bool3(true);
-thread bool4 v4bool_var5 = bool4(true, false, true, false);
 kernel void tint_symbol() {
-  bool_var1 = false;
-  bool_var2 = false;
-  bool_var3 = false;
-  i32_var1 = 0;
-  i32_var2 = 0;
-  i32_var3 = 0;
-  u32_var1 = 0u;
-  u32_var2 = 0u;
-  u32_var3 = 0u;
-  v3bool_var1 = bool3(false);
-  v3bool_var2 = bool3(false);
-  v3bool_var3 = bool3(false);
-  v3bool_var4 = bool3(false);
-  v4bool_var5 = bool4(false);
-  v3i32_var1 = int3(0);
-  v3i32_var2 = int3(0);
-  v3i32_var3 = int3(0);
-  v3u32_var1 = uint3(0u);
-  v3u32_var2 = uint3(0u);
-  v3u32_var3 = uint3(0u);
+  thread bool bool_var1 = true;
+  thread bool bool_var2 = true;
+  thread bool bool_var3 = true;
+  thread int i32_var1 = 1;
+  thread int i32_var2 = 1;
+  thread int i32_var3 = 1;
+  thread uint u32_var1 = 1u;
+  thread uint u32_var2 = 1u;
+  thread uint u32_var3 = 1u;
+  thread bool3 v3bool_var1 = bool3(true);
+  thread bool3 v3bool_var2 = bool3(true);
+  thread bool3 v3bool_var3 = bool3(true);
+  thread int3 v3i32_var1 = int3(1);
+  thread int3 v3i32_var2 = int3(1);
+  thread int3 v3i32_var3 = int3(1);
+  thread uint3 v3u32_var1 = uint3(1u);
+  thread uint3 v3u32_var2 = uint3(1u);
+  thread uint3 v3u32_var3 = uint3(1u);
+  thread bool3 v3bool_var4 = bool3(true);
+  thread bool4 v4bool_var5 = bool4(true, false, true, false);
+  tint_module_vars_struct const tint_module_vars = {.bool_var1=(&bool_var1), .bool_var2=(&bool_var2), .bool_var3=(&bool_var3), .i32_var1=(&i32_var1), .i32_var2=(&i32_var2), .i32_var3=(&i32_var3), .u32_var1=(&u32_var1), .u32_var2=(&u32_var2), .u32_var3=(&u32_var3), .v3bool_var1=(&v3bool_var1), .v3bool_var2=(&v3bool_var2), .v3bool_var3=(&v3bool_var3), .v3i32_var1=(&v3i32_var1), .v3i32_var2=(&v3i32_var2), .v3i32_var3=(&v3i32_var3), .v3u32_var1=(&v3u32_var1), .v3u32_var2=(&v3u32_var2), .v3u32_var3=(&v3u32_var3), .v3bool_var4=(&v3bool_var4), .v4bool_var5=(&v4bool_var5)};
+  (*tint_module_vars.bool_var1) = false;
+  (*tint_module_vars.bool_var2) = false;
+  (*tint_module_vars.bool_var3) = false;
+  (*tint_module_vars.i32_var1) = 0;
+  (*tint_module_vars.i32_var2) = 0;
+  (*tint_module_vars.i32_var3) = 0;
+  (*tint_module_vars.u32_var1) = 0u;
+  (*tint_module_vars.u32_var2) = 0u;
+  (*tint_module_vars.u32_var3) = 0u;
+  (*tint_module_vars.v3bool_var1) = bool3(false);
+  (*tint_module_vars.v3bool_var2) = bool3(false);
+  (*tint_module_vars.v3bool_var3) = bool3(false);
+  (*tint_module_vars.v3bool_var4) = bool3(false);
+  (*tint_module_vars.v4bool_var5) = bool4(false);
+  (*tint_module_vars.v3i32_var1) = int3(0);
+  (*tint_module_vars.v3i32_var2) = int3(0);
+  (*tint_module_vars.v3i32_var3) = int3(0);
+  (*tint_module_vars.v3u32_var1) = uint3(0u);
+  (*tint_module_vars.v3u32_var2) = uint3(0u);
+  (*tint_module_vars.v3u32_var3) = uint3(0u);
 }
-program_source:4:13: error: program scope variable must reside in constant address space
-thread bool bool_var1 = true;
-            ^
-program_source:5:13: error: program scope variable must reside in constant address space
-thread bool bool_var2 = true;
-            ^
-program_source:6:13: error: program scope variable must reside in constant address space
-thread bool bool_var3 = true;
-            ^
-program_source:7:12: error: program scope variable must reside in constant address space
-thread int i32_var1 = 1;
-           ^
-program_source:8:12: error: program scope variable must reside in constant address space
-thread int i32_var2 = 1;
-           ^
-program_source:9:12: error: program scope variable must reside in constant address space
-thread int i32_var3 = 1;
-           ^
-program_source:10:13: error: program scope variable must reside in constant address space
-thread uint u32_var1 = 1u;
-            ^
-program_source:11:13: error: program scope variable must reside in constant address space
-thread uint u32_var2 = 1u;
-            ^
-program_source:12:13: error: program scope variable must reside in constant address space
-thread uint u32_var3 = 1u;
-            ^
-program_source:13:14: error: program scope variable must reside in constant address space
-thread bool3 v3bool_var1 = bool3(true);
-             ^
-program_source:14:14: error: program scope variable must reside in constant address space
-thread bool3 v3bool_var2 = bool3(true);
-             ^
-program_source:15:14: error: program scope variable must reside in constant address space
-thread bool3 v3bool_var3 = bool3(true);
-             ^
-program_source:16:13: error: program scope variable must reside in constant address space
-thread int3 v3i32_var1 = int3(1);
-            ^
-program_source:17:13: error: program scope variable must reside in constant address space
-thread int3 v3i32_var2 = int3(1);
-            ^
-program_source:18:13: error: program scope variable must reside in constant address space
-thread int3 v3i32_var3 = int3(1);
-            ^
-program_source:19:14: error: program scope variable must reside in constant address space
-thread uint3 v3u32_var1 = uint3(1u);
-             ^
-program_source:20:14: error: program scope variable must reside in constant address space
-thread uint3 v3u32_var2 = uint3(1u);
-             ^
-program_source:21:14: error: program scope variable must reside in constant address space
-thread uint3 v3u32_var3 = uint3(1u);
-             ^
-program_source:22:14: error: program scope variable must reside in constant address space
-thread bool3 v3bool_var4 = bool3(true);
-             ^
-program_source:23:14: error: program scope variable must reside in constant address space
-thread bool4 v4bool_var5 = bool4(true, false, true, false);
-             ^
-
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
index b889680..e6954bb 100644
--- a/test/tint/types/module_scope_var_initializers.wgsl.expected.ir.msl
+++ b/test/tint/types/module_scope_var_initializers.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -17,57 +15,39 @@
 struct S {
   float a;
 };
+struct tint_module_vars_struct {
+  thread bool* bool_var;
+  thread int* i32_var;
+  thread uint* u32_var;
+  thread float* f32_var;
+  thread int2* v2i32_var;
+  thread uint3* v3u32_var;
+  thread float4* v4f32_var;
+  thread float2x3* m2x3_var;
+  thread tint_array<float, 4>* arr_var;
+  thread S* struct_var;
+};
 
-thread bool bool_var = false;
-thread int i32_var = 0;
-thread uint u32_var = 0u;
-thread float f32_var = 0.0f;
-thread int2 v2i32_var = int2(0);
-thread uint3 v3u32_var = uint3(0u);
-thread float4 v4f32_var = float4(0.0f);
-thread float2x3 m2x3_var = float2x3(float3(0.0f), float3(0.0f));
-thread tint_array<float, 4> arr_var = tint_array<float, 4>{};
-thread S struct_var = S{};
 kernel void tint_symbol() {
-  bool_var = false;
-  i32_var = 0;
-  u32_var = 0u;
-  f32_var = 0.0f;
-  v2i32_var = int2(0);
-  v3u32_var = uint3(0u);
-  v4f32_var = float4(0.0f);
-  m2x3_var = float2x3(float3(0.0f), float3(0.0f));
-  arr_var = tint_array<float, 4>{};
-  struct_var = S{};
+  thread bool bool_var = false;
+  thread int i32_var = 0;
+  thread uint u32_var = 0u;
+  thread float f32_var = 0.0f;
+  thread int2 v2i32_var = int2(0);
+  thread uint3 v3u32_var = uint3(0u);
+  thread float4 v4f32_var = float4(0.0f);
+  thread float2x3 m2x3_var = float2x3(float3(0.0f), float3(0.0f));
+  thread tint_array<float, 4> arr_var = tint_array<float, 4>{};
+  thread S struct_var = S{};
+  tint_module_vars_struct const tint_module_vars = {.bool_var=(&bool_var), .i32_var=(&i32_var), .u32_var=(&u32_var), .f32_var=(&f32_var), .v2i32_var=(&v2i32_var), .v3u32_var=(&v3u32_var), .v4f32_var=(&v4f32_var), .m2x3_var=(&m2x3_var), .arr_var=(&arr_var), .struct_var=(&struct_var)};
+  (*tint_module_vars.bool_var) = false;
+  (*tint_module_vars.i32_var) = 0;
+  (*tint_module_vars.u32_var) = 0u;
+  (*tint_module_vars.f32_var) = 0.0f;
+  (*tint_module_vars.v2i32_var) = int2(0);
+  (*tint_module_vars.v3u32_var) = uint3(0u);
+  (*tint_module_vars.v4f32_var) = float4(0.0f);
+  (*tint_module_vars.m2x3_var) = float2x3(float3(0.0f), float3(0.0f));
+  (*tint_module_vars.arr_var) = tint_array<float, 4>{};
+  (*tint_module_vars.struct_var) = S{};
 }
-program_source:19:13: error: program scope variable must reside in constant address space
-thread bool bool_var = false;
-            ^
-program_source:20:12: error: program scope variable must reside in constant address space
-thread int i32_var = 0;
-           ^
-program_source:21:13: error: program scope variable must reside in constant address space
-thread uint u32_var = 0u;
-            ^
-program_source:22:14: error: program scope variable must reside in constant address space
-thread float f32_var = 0.0f;
-             ^
-program_source:23:13: error: program scope variable must reside in constant address space
-thread int2 v2i32_var = int2(0);
-            ^
-program_source:24:14: error: program scope variable must reside in constant address space
-thread uint3 v3u32_var = uint3(0u);
-             ^
-program_source:25:15: error: program scope variable must reside in constant address space
-thread float4 v4f32_var = float4(0.0f);
-              ^
-program_source:26:17: error: program scope variable must reside in constant address space
-thread float2x3 m2x3_var = float2x3(float3(0.0f), float3(0.0f));
-                ^
-program_source:27:29: error: program scope variable must reside in constant address space
-thread tint_array<float, 4> arr_var = tint_array<float, 4>{};
-                            ^
-program_source:28:10: error: program scope variable must reside in constant address space
-thread S struct_var = S{};
-         ^
-
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
deleted file mode 100644
index 44b8dae..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint x_1 = 0u;
-void main_1() {
-  uint const x_2 = x_1;
-}
-kernel void tint_symbol(uint x_1_param [[thread_index_in_threadgroup]]) {
-  x_1 = x_1_param;
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint x_1 = 0u;
-            ^
-program_source:6:14: warning: unused variable 'x_2' [-Wunused-variable]
-  uint const x_2 = x_1;
-             ^
-
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
deleted file mode 100644
index 19dc07f..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread int x_1 = 0;
-void main_1() {
-  int const x_2 = x_1;
-}
-kernel void tint_symbol(uint x_1_param [[thread_index_in_threadgroup]]) {
-  x_1 = as_type<int>(x_1_param);
-  main_1();
-}
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int x_1 = 0;
-           ^
-program_source:6:13: warning: unused variable 'x_2' [-Wunused-variable]
-  int const x_2 = x_1;
-            ^
-
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
deleted file mode 100644
index 7658eae..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_2.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint3 x_1 = 0u;
-void main_1() {
-  uint3 const x_2 = x_1;
-}
-kernel void tint_symbol(uint3 x_1_param [[thread_position_in_threadgroup]]) {
-  x_1 = x_1_param;
-  main_1();
-}
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint3 x_1 = 0u;
-             ^
-program_source:6:15: warning: unused variable 'x_2' [-Wunused-variable]
-  uint3 const x_2 = x_1;
-              ^
-
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
deleted file mode 100644
index 49922e8..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_3.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread int3 x_1 = 0;
-void main_1() {
-  int3 const x_2 = x_1;
-}
-kernel void tint_symbol(uint3 x_1_param [[thread_position_in_threadgroup]]) {
-  x_1 = as_type<int3>(x_1_param);
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int3 x_1 = 0;
-            ^
-program_source:6:14: warning: unused variable 'x_2' [-Wunused-variable]
-  int3 const x_2 = x_1;
-             ^
-
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
deleted file mode 100644
index 2d802fa..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_4.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint3 x_1 = 0u;
-void main_1() {
-  uint3 const x_2 = x_1;
-}
-kernel void tint_symbol(uint3 x_1_param [[thread_position_in_grid]]) {
-  x_1 = x_1_param;
-  main_1();
-}
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint3 x_1 = 0u;
-             ^
-program_source:6:15: warning: unused variable 'x_2' [-Wunused-variable]
-  uint3 const x_2 = x_1;
-              ^
-
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
deleted file mode 100644
index 47e466f..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_AccessChain_5.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread int3 x_1 = 0;
-void main_1() {
-  int3 const x_2 = x_1;
-}
-kernel void tint_symbol(uint3 x_1_param [[thread_position_in_grid]]) {
-  x_1 = as_type<int3>(x_1_param);
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int3 x_1 = 0;
-            ^
-program_source:6:14: warning: unused variable 'x_2' [-Wunused-variable]
-  int3 const x_2 = x_1;
-             ^
-
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
deleted file mode 100644
index 44b8dae..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint x_1 = 0u;
-void main_1() {
-  uint const x_2 = x_1;
-}
-kernel void tint_symbol(uint x_1_param [[thread_index_in_threadgroup]]) {
-  x_1 = x_1_param;
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint x_1 = 0u;
-            ^
-program_source:6:14: warning: unused variable 'x_2' [-Wunused-variable]
-  uint const x_2 = x_1;
-             ^
-
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
deleted file mode 100644
index 19dc07f..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread int x_1 = 0;
-void main_1() {
-  int const x_2 = x_1;
-}
-kernel void tint_symbol(uint x_1_param [[thread_index_in_threadgroup]]) {
-  x_1 = as_type<int>(x_1_param);
-  main_1();
-}
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int x_1 = 0;
-           ^
-program_source:6:13: warning: unused variable 'x_2' [-Wunused-variable]
-  int const x_2 = x_1;
-            ^
-
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
deleted file mode 100644
index 7658eae..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_2.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint3 x_1 = 0u;
-void main_1() {
-  uint3 const x_2 = x_1;
-}
-kernel void tint_symbol(uint3 x_1_param [[thread_position_in_threadgroup]]) {
-  x_1 = x_1_param;
-  main_1();
-}
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint3 x_1 = 0u;
-             ^
-program_source:6:15: warning: unused variable 'x_2' [-Wunused-variable]
-  uint3 const x_2 = x_1;
-              ^
-
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
deleted file mode 100644
index 49922e8..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_3.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread int3 x_1 = 0;
-void main_1() {
-  int3 const x_2 = x_1;
-}
-kernel void tint_symbol(uint3 x_1_param [[thread_position_in_threadgroup]]) {
-  x_1 = as_type<int3>(x_1_param);
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int3 x_1 = 0;
-            ^
-program_source:6:14: warning: unused variable 'x_2' [-Wunused-variable]
-  int3 const x_2 = x_1;
-             ^
-
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
deleted file mode 100644
index 2d802fa..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_4.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint3 x_1 = 0u;
-void main_1() {
-  uint3 const x_2 = x_1;
-}
-kernel void tint_symbol(uint3 x_1_param [[thread_position_in_grid]]) {
-  x_1 = x_1_param;
-  main_1();
-}
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint3 x_1 = 0u;
-             ^
-program_source:6:15: warning: unused variable 'x_2' [-Wunused-variable]
-  uint3 const x_2 = x_1;
-              ^
-
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
deleted file mode 100644
index 47e466f..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_CopyObject_5.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread int3 x_1 = 0;
-void main_1() {
-  int3 const x_2 = x_1;
-}
-kernel void tint_symbol(uint3 x_1_param [[thread_position_in_grid]]) {
-  x_1 = as_type<int3>(x_1_param);
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int3 x_1 = 0;
-            ^
-program_source:6:14: warning: unused variable 'x_2' [-Wunused-variable]
-  int3 const x_2 = x_1;
-             ^
-
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
deleted file mode 100644
index 44b8dae..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint x_1 = 0u;
-void main_1() {
-  uint const x_2 = x_1;
-}
-kernel void tint_symbol(uint x_1_param [[thread_index_in_threadgroup]]) {
-  x_1 = x_1_param;
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint x_1 = 0u;
-            ^
-program_source:6:14: warning: unused variable 'x_2' [-Wunused-variable]
-  uint const x_2 = x_1;
-             ^
-
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
deleted file mode 100644
index 19dc07f..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread int x_1 = 0;
-void main_1() {
-  int const x_2 = x_1;
-}
-kernel void tint_symbol(uint x_1_param [[thread_index_in_threadgroup]]) {
-  x_1 = as_type<int>(x_1_param);
-  main_1();
-}
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int x_1 = 0;
-           ^
-program_source:6:13: warning: unused variable 'x_2' [-Wunused-variable]
-  int const x_2 = x_1;
-            ^
-
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
deleted file mode 100644
index 7658eae..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_2.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint3 x_1 = 0u;
-void main_1() {
-  uint3 const x_2 = x_1;
-}
-kernel void tint_symbol(uint3 x_1_param [[thread_position_in_threadgroup]]) {
-  x_1 = x_1_param;
-  main_1();
-}
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint3 x_1 = 0u;
-             ^
-program_source:6:15: warning: unused variable 'x_2' [-Wunused-variable]
-  uint3 const x_2 = x_1;
-              ^
-
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
deleted file mode 100644
index 49922e8..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_3.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread int3 x_1 = 0;
-void main_1() {
-  int3 const x_2 = x_1;
-}
-kernel void tint_symbol(uint3 x_1_param [[thread_position_in_threadgroup]]) {
-  x_1 = as_type<int3>(x_1_param);
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int3 x_1 = 0;
-            ^
-program_source:6:14: warning: unused variable 'x_2' [-Wunused-variable]
-  int3 const x_2 = x_1;
-             ^
-
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
deleted file mode 100644
index 2d802fa..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_4.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint3 x_1 = 0u;
-void main_1() {
-  uint3 const x_2 = x_1;
-}
-kernel void tint_symbol(uint3 x_1_param [[thread_position_in_grid]]) {
-  x_1 = x_1_param;
-  main_1();
-}
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint3 x_1 = 0u;
-             ^
-program_source:6:15: warning: unused variable 'x_2' [-Wunused-variable]
-  uint3 const x_2 = x_1;
-              ^
-
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
deleted file mode 100644
index 47e466f..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvModuleScopeVarParserTest_ComputeBuiltin_Load_Direct_5.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread int3 x_1 = 0;
-void main_1() {
-  int3 const x_2 = x_1;
-}
-kernel void tint_symbol(uint3 x_1_param [[thread_position_in_grid]]) {
-  x_1 = as_type<int3>(x_1_param);
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread int3 x_1 = 0;
-            ^
-program_source:6:14: warning: unused variable 'x_2' [-Wunused-variable]
-  int3 const x_2 = x_1;
-             ^
-
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
deleted file mode 100644
index 8b257a0..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_ReadReplaced_Vertex.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 x_2_1 [[position]];
-};
-
-thread float4 x_2 = 0.0f;
-thread float x_900 = 0.0f;
-void main_1() {
-  x_900 = 1.0f;
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.x_2_1=x_2};
-}
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 x_2 = 0.0f;
-              ^
-program_source:8:14: error: program scope variable must reside in constant address space
-thread float x_900 = 0.0f;
-             ^
-
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
deleted file mode 100644
index c466e7d..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_Write1_IsErased.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,19 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 x_2_1 [[position]];
-};
-
-thread float4 x_2 = 0.0f;
-void main_1() {
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.x_2_1=x_2};
-}
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 x_2 = 0.0f;
-              ^
-
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
deleted file mode 100644
index c466e7d..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,19 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 x_2_1 [[position]];
-};
-
-thread float4 x_2 = 0.0f;
-void main_1() {
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.x_2_1=x_2};
-}
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 x_2 = 0.0f;
-              ^
-
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
deleted file mode 100644
index c466e7d..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Loose_WriteViaCopyObjectPriorAccess_Erased.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,19 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 x_2_1 [[position]];
-};
-
-thread float4 x_2 = 0.0f;
-void main_1() {
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.x_2_1=x_2};
-}
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 x_2 = 0.0f;
-              ^
-
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
deleted file mode 100644
index 3bc136b..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_ReadReplaced.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 gl_Position [[position]];
-};
-
-thread float x_900 = 0.0f;
-thread float4 gl_Position = 0.0f;
-void main_1() {
-  x_900 = 1.0f;
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.gl_Position=gl_Position};
-}
-program_source:7:14: error: program scope variable must reside in constant address space
-thread float x_900 = 0.0f;
-             ^
-program_source:8:15: error: program scope variable must reside in constant address space
-thread float4 gl_Position = 0.0f;
-              ^
-
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
deleted file mode 100644
index 4644812..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_Write1_IsErased.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,19 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 gl_Position [[position]];
-};
-
-thread float4 gl_Position = 0.0f;
-void main_1() {
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.gl_Position=gl_Position};
-}
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 gl_Position = 0.0f;
-              ^
-
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
deleted file mode 100644
index 4644812..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPointSize_WriteViaCopyObjectPostAccessChainErased.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,19 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 gl_Position [[position]];
-};
-
-thread float4 gl_Position = 0.0f;
-void main_1() {
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.gl_Position=gl_Position};
-}
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 gl_Position = 0.0f;
-              ^
-
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
deleted file mode 100644
index 4644812..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,19 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 gl_Position [[position]];
-};
-
-thread float4 gl_Position = 0.0f;
-void main_1() {
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.gl_Position=gl_Position};
-}
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 gl_Position = 0.0f;
-              ^
-
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
deleted file mode 100644
index d89d0b8..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_BuiltIn_Position_Initializer.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,19 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 gl_Position [[position]];
-};
-
-thread float4 gl_Position = float4(1.0f, 2.0f, 3.0f, 4.0f);
-void main_1() {
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.gl_Position=gl_Position};
-}
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 gl_Position = float4(1.0f, 2.0f, 3.0f, 4.0f);
-              ^
-
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
deleted file mode 100644
index 7dba87b..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 gl_Position [[position]];
-};
-
-thread float4 gl_Position = 0.0f;
-void main_1() {
-  gl_Position = float4(0.0f);
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.gl_Position=gl_Position};
-}
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 gl_Position = 0.0f;
-              ^
-
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
deleted file mode 100644
index 17378a1..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_OneAccessChain.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 gl_Position [[position]];
-};
-
-thread float4 gl_Position = 0.0f;
-void main_1() {
-  gl_Position[1u] = 0.0f;
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.gl_Position=gl_Position};
-}
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 gl_Position = 0.0f;
-              ^
-
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
deleted file mode 100644
index 17378a1..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePositionMember_TwoAccessChain.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 gl_Position [[position]];
-};
-
-thread float4 gl_Position = 0.0f;
-void main_1() {
-  gl_Position[1u] = 0.0f;
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.gl_Position=gl_Position};
-}
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 gl_Position = 0.0f;
-              ^
-
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
deleted file mode 100644
index 7dba87b..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_BuiltinPosition_StorePosition_PerVertexStructOutOfOrderDecl.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 gl_Position [[position]];
-};
-
-thread float4 gl_Position = 0.0f;
-void main_1() {
-  gl_Position = float4(0.0f);
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.gl_Position=gl_Position};
-}
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 gl_Position = 0.0f;
-              ^
-
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
deleted file mode 100644
index c308d35..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_FragDepth_Out_Initializer.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,19 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float x_1_1 [[depth(any)]];
-};
-
-thread float x_1 = 0.0f;
-void main_1() {
-}
-fragment main_out tint_symbol() {
-  main_1();
-  return {.x_1_1=x_1};
-}
-program_source:7:14: error: program scope variable must reside in constant address space
-thread float x_1 = 0.0f;
-             ^
-
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
deleted file mode 100644
index 477924d..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_In_Signed.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,28 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-
-thread tint_array<int, 1> x_1 = {};
-void main_1() {
-}
-fragment void tint_symbol(uint x_1_param [[sample_mask]]) {
-  x_1[0] = as_type<int>(x_1_param);
-  main_1();
-}
-program_source:16:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 1> x_1 = {};
-                          ^
-
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
deleted file mode 100644
index 867570d..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_In_Unsigned.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,28 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-
-thread tint_array<uint, 1> x_1 = {};
-void main_1() {
-}
-fragment void tint_symbol(uint x_1_param [[sample_mask]]) {
-  x_1[0] = x_1_param;
-  main_1();
-}
-program_source:16:28: error: program scope variable must reside in constant address space
-thread tint_array<uint, 1> x_1 = {};
-                           ^
-
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
deleted file mode 100644
index 4f1417f..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_Out_Signed_Initializer.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,31 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-struct main_out {
-  uint x_1_1 [[sample_mask]];
-};
-
-thread tint_array<int, 1> x_1 = tint_array<int, 1>{};
-void main_1() {
-}
-fragment main_out tint_symbol() {
-  main_1();
-  return {.x_1_1=as_type<uint>(x_1[0])};
-}
-program_source:19:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 1> x_1 = tint_array<int, 1>{};
-                          ^
-
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
deleted file mode 100644
index 672fbd1..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_EntryPointWrapping_BuiltinVar_SampleMask_Out_Unsigned_Initializer.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,31 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-struct main_out {
-  uint x_1_1 [[sample_mask]];
-};
-
-thread tint_array<uint, 1> x_1 = tint_array<uint, 1>{};
-void main_1() {
-}
-fragment main_out tint_symbol() {
-  main_1();
-  return {.x_1_1=x_1[0]};
-}
-program_source:19:28: error: program scope variable must reside in constant address space
-thread tint_array<uint, 1> x_1 = tint_array<uint, 1>{};
-                           ^
-
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
deleted file mode 100644
index 30d865d..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_I32_Load_AccessChain.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread int x_1 = 0;
-void main_1() {
-  int const x_2 = x_1;
-}
-fragment void tint_symbol(uint x_1_param [[sample_id]]) {
-  x_1 = as_type<int>(x_1_param);
-  main_1();
-}
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int x_1 = 0;
-           ^
-program_source:6:13: warning: unused variable 'x_2' [-Wunused-variable]
-  int const x_2 = x_1;
-            ^
-
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
deleted file mode 100644
index 30d865d..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_I32_Load_CopyObject.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread int x_1 = 0;
-void main_1() {
-  int const x_2 = x_1;
-}
-fragment void tint_symbol(uint x_1_param [[sample_id]]) {
-  x_1 = as_type<int>(x_1_param);
-  main_1();
-}
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int x_1 = 0;
-           ^
-program_source:6:13: warning: unused variable 'x_2' [-Wunused-variable]
-  int const x_2 = x_1;
-            ^
-
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
deleted file mode 100644
index 30d865d..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_I32_Load_Direct.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread int x_1 = 0;
-void main_1() {
-  int const x_2 = x_1;
-}
-fragment void tint_symbol(uint x_1_param [[sample_id]]) {
-  x_1 = as_type<int>(x_1_param);
-  main_1();
-}
-program_source:4:12: error: program scope variable must reside in constant address space
-thread int x_1 = 0;
-           ^
-program_source:6:13: warning: unused variable 'x_2' [-Wunused-variable]
-  int const x_2 = x_1;
-            ^
-
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
deleted file mode 100644
index 1179f38..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_U32_Load_AccessChain.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint x_1 = 0u;
-void main_1() {
-  uint const x_2 = x_1;
-}
-fragment void tint_symbol(uint x_1_param [[sample_id]]) {
-  x_1 = x_1_param;
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint x_1 = 0u;
-            ^
-program_source:6:14: warning: unused variable 'x_2' [-Wunused-variable]
-  uint const x_2 = x_1;
-             ^
-
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
deleted file mode 100644
index 1179f38..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_U32_Load_CopyObject.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint x_1 = 0u;
-void main_1() {
-  uint const x_2 = x_1;
-}
-fragment void tint_symbol(uint x_1_param [[sample_id]]) {
-  x_1 = x_1_param;
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint x_1 = 0u;
-            ^
-program_source:6:14: warning: unused variable 'x_2' [-Wunused-variable]
-  uint const x_2 = x_1;
-             ^
-
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
deleted file mode 100644
index 1179f38..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleId_U32_Load_Direct.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint x_1 = 0u;
-void main_1() {
-  uint const x_2 = x_1;
-}
-fragment void tint_symbol(uint x_1_param [[sample_id]]) {
-  x_1 = x_1_param;
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint x_1 = 0u;
-            ^
-program_source:6:14: warning: unused variable 'x_2' [-Wunused-variable]
-  uint const x_2 = x_1;
-             ^
-
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
deleted file mode 100644
index 73a87d1..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_I32_AccessChain.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-
-thread tint_array<int, 1> x_1 = {};
-void main_1() {
-  int const x_4 = x_1[0];
-}
-fragment void tint_symbol(uint x_1_param [[sample_mask]]) {
-  x_1[0] = as_type<int>(x_1_param);
-  main_1();
-}
-program_source:16:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 1> x_1 = {};
-                          ^
-program_source:18:13: warning: unused variable 'x_4' [-Wunused-variable]
-  int const x_4 = x_1[0];
-            ^
-
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
deleted file mode 100644
index 73a87d1..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_I32_CopyObject.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-
-thread tint_array<int, 1> x_1 = {};
-void main_1() {
-  int const x_4 = x_1[0];
-}
-fragment void tint_symbol(uint x_1_param [[sample_mask]]) {
-  x_1[0] = as_type<int>(x_1_param);
-  main_1();
-}
-program_source:16:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 1> x_1 = {};
-                          ^
-program_source:18:13: warning: unused variable 'x_4' [-Wunused-variable]
-  int const x_4 = x_1[0];
-            ^
-
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
deleted file mode 100644
index a26b371..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_I32_Direct.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-
-thread tint_array<int, 1> x_1 = {};
-void main_1() {
-  int const x_3 = x_1[0];
-}
-fragment void tint_symbol(uint x_1_param [[sample_mask]]) {
-  x_1[0] = as_type<int>(x_1_param);
-  main_1();
-}
-program_source:16:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 1> x_1 = {};
-                          ^
-program_source:18:13: warning: unused variable 'x_3' [-Wunused-variable]
-  int const x_3 = x_1[0];
-            ^
-
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
deleted file mode 100644
index cea308f..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_U32_AccessChain.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-
-thread tint_array<uint, 1> x_1 = {};
-void main_1() {
-  uint const x_4 = x_1[0];
-}
-fragment void tint_symbol(uint x_1_param [[sample_mask]]) {
-  x_1[0] = x_1_param;
-  main_1();
-}
-program_source:16:28: error: program scope variable must reside in constant address space
-thread tint_array<uint, 1> x_1 = {};
-                           ^
-program_source:18:14: warning: unused variable 'x_4' [-Wunused-variable]
-  uint const x_4 = x_1[0];
-             ^
-
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
deleted file mode 100644
index cea308f..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_U32_CopyObject.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-
-thread tint_array<uint, 1> x_1 = {};
-void main_1() {
-  uint const x_4 = x_1[0];
-}
-fragment void tint_symbol(uint x_1_param [[sample_mask]]) {
-  x_1[0] = x_1_param;
-  main_1();
-}
-program_source:16:28: error: program scope variable must reside in constant address space
-thread tint_array<uint, 1> x_1 = {};
-                           ^
-program_source:18:14: warning: unused variable 'x_4' [-Wunused-variable]
-  uint const x_4 = x_1[0];
-             ^
-
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
deleted file mode 100644
index 514dce4..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_U32_Direct.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-
-thread tint_array<uint, 1> x_1 = {};
-void main_1() {
-  uint const x_3 = x_1[0];
-}
-fragment void tint_symbol(uint x_1_param [[sample_mask]]) {
-  x_1[0] = x_1_param;
-  main_1();
-}
-program_source:16:28: error: program scope variable must reside in constant address space
-thread tint_array<uint, 1> x_1 = {};
-                           ^
-program_source:18:14: warning: unused variable 'x_3' [-Wunused-variable]
-  uint const x_3 = x_1[0];
-             ^
-
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
deleted file mode 100644
index 514dce4..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_In_WithStride.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-
-thread tint_array<uint, 1> x_1 = {};
-void main_1() {
-  uint const x_3 = x_1[0];
-}
-fragment void tint_symbol(uint x_1_param [[sample_mask]]) {
-  x_1[0] = x_1_param;
-  main_1();
-}
-program_source:16:28: error: program scope variable must reside in constant address space
-thread tint_array<uint, 1> x_1 = {};
-                           ^
-program_source:18:14: warning: unused variable 'x_3' [-Wunused-variable]
-  uint const x_3 = x_1[0];
-             ^
-
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
deleted file mode 100644
index 6c43e76..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_I32_AccessChain.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-struct main_out {
-  uint x_1_1 [[sample_mask]];
-};
-
-thread tint_array<int, 1> x_1 = {};
-void main_1() {
-  x_1[0] = 12;
-}
-fragment main_out tint_symbol() {
-  main_1();
-  return {.x_1_1=as_type<uint>(x_1[0])};
-}
-program_source:19:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 1> x_1 = {};
-                          ^
-
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
deleted file mode 100644
index 6c43e76..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_I32_CopyObject.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-struct main_out {
-  uint x_1_1 [[sample_mask]];
-};
-
-thread tint_array<int, 1> x_1 = {};
-void main_1() {
-  x_1[0] = 12;
-}
-fragment main_out tint_symbol() {
-  main_1();
-  return {.x_1_1=as_type<uint>(x_1[0])};
-}
-program_source:19:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 1> x_1 = {};
-                          ^
-
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
deleted file mode 100644
index 6c43e76..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_I32_Direct.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-struct main_out {
-  uint x_1_1 [[sample_mask]];
-};
-
-thread tint_array<int, 1> x_1 = {};
-void main_1() {
-  x_1[0] = 12;
-}
-fragment main_out tint_symbol() {
-  main_1();
-  return {.x_1_1=as_type<uint>(x_1[0])};
-}
-program_source:19:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 1> x_1 = {};
-                          ^
-
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
deleted file mode 100644
index a9c8a36..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_U32_AccessChain.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-struct main_out {
-  uint x_1_1 [[sample_mask]];
-};
-
-thread tint_array<uint, 1> x_1 = {};
-void main_1() {
-  x_1[0] = 0u;
-}
-fragment main_out tint_symbol() {
-  main_1();
-  return {.x_1_1=x_1[0]};
-}
-program_source:19:28: error: program scope variable must reside in constant address space
-thread tint_array<uint, 1> x_1 = {};
-                           ^
-
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
deleted file mode 100644
index a9c8a36..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_U32_CopyObject.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-struct main_out {
-  uint x_1_1 [[sample_mask]];
-};
-
-thread tint_array<uint, 1> x_1 = {};
-void main_1() {
-  x_1[0] = 0u;
-}
-fragment main_out tint_symbol() {
-  main_1();
-  return {.x_1_1=x_1[0]};
-}
-program_source:19:28: error: program scope variable must reside in constant address space
-thread tint_array<uint, 1> x_1 = {};
-                           ^
-
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
deleted file mode 100644
index a9c8a36..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_U32_Direct.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-struct main_out {
-  uint x_1_1 [[sample_mask]];
-};
-
-thread tint_array<uint, 1> x_1 = {};
-void main_1() {
-  x_1[0] = 0u;
-}
-fragment main_out tint_symbol() {
-  main_1();
-  return {.x_1_1=x_1[0]};
-}
-program_source:19:28: error: program scope variable must reside in constant address space
-thread tint_array<uint, 1> x_1 = {};
-                           ^
-
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
deleted file mode 100644
index a9c8a36..0000000
--- a/test/tint/unittest/reader/spirv/SpvModuleScopeVarParserTest_SampleMask_Out_WithStride.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-template<typename T, size_t N>
-struct tint_array {
-  const constant T& operator[](size_t i) const constant { return elements[i]; }
-  device T& operator[](size_t i) device { return elements[i]; }
-  const device T& operator[](size_t i) const device { return elements[i]; }
-  thread T& operator[](size_t i) thread { return elements[i]; }
-  const thread T& operator[](size_t i) const thread { return elements[i]; }
-  threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
-  const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
-  T elements[N];
-};
-
-struct main_out {
-  uint x_1_1 [[sample_mask]];
-};
-
-thread tint_array<uint, 1> x_1 = {};
-void main_1() {
-  x_1[0] = 0u;
-}
-fragment main_out tint_symbol() {
-  main_1();
-  return {.x_1_1=x_1[0]};
-}
-program_source:19:28: error: program scope variable must reside in constant address space
-thread tint_array<uint, 1> x_1 = {};
-                           ^
-
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
deleted file mode 100644
index 78df30e..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnFalse.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,27 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  {
-    while(true) {
-      var_1 = 1u;
-      if (false) {
-      } else {
-        break;
-      }
-      continue;
-    }
-  }
-  var_1 = 5u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index bb63b4d..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Back_SingleBlock_LoopBreak_OnTrue.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,26 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  {
-    while(true) {
-      var_1 = 1u;
-      if (false) {
-        break;
-      }
-      continue;
-    }
-  }
-  var_1 = 5u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 325db3e..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_Forward_Forward_Same.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,17 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  var_1 = 2u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 92775e8..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_IfBreak_IfBreak_Same.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,19 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  if (false) {
-  }
-  var_1 = 5u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index ac791f1..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnFalse.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,34 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  {
-    while(true) {
-      var_1 = 1u;
-      if (true) {
-        var_1 = 2u;
-        if (false) {
-          break;
-        } else {
-          var_1 = 4u;
-          continue;
-        }
-      }
-      var_1 = 3u;
-      var_1 = 4u;
-      continue;
-    }
-  }
-  var_1 = 5u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 0ba35db..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Continue_OnTrue.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,34 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  {
-    while(true) {
-      var_1 = 1u;
-      if (true) {
-        var_1 = 2u;
-        if (false) {
-          var_1 = 4u;
-          continue;
-        } else {
-          break;
-        }
-      }
-      var_1 = 3u;
-      var_1 = 4u;
-      continue;
-    }
-  }
-  var_1 = 5u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index f11023d..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnFalse.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,29 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  {
-    while(true) {
-      var_1 = 1u;
-      var_1 = 2u;
-      if (false) {
-        break;
-      }
-      var_1 = 3u;
-      var_1 = 4u;
-      continue;
-    }
-  }
-  var_1 = 5u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index c382531..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_Forward_OnTrue.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,30 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  {
-    while(true) {
-      var_1 = 1u;
-      var_1 = 2u;
-      if (false) {
-      } else {
-        break;
-      }
-      var_1 = 3u;
-      var_1 = 4u;
-      continue;
-    }
-  }
-  var_1 = 5u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 991b423..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_MultiBlock_LoopBreak.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  {
-    while(true) {
-      var_1 = 1u;
-      var_1 = 2u;
-      break;
-    }
-  }
-  var_1 = 5u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 369d438..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_LoopBreak_SingleBlock_LoopBreak.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,23 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  {
-    while(true) {
-      var_1 = 1u;
-      break;
-    }
-  }
-  var_1 = 5u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 1920aa9..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Forward_OnFalse.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42u) {
-    case 20u:
-    {
-      var_1 = 20u;
-      if (false) {
-        break;
-      }
-      var_1 = 30u;
-      break;
-    }
-    default:
-    {
-      break;
-    }
-  }
-  var_1 = 8u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 78b9430..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_Forward_OnTrue.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42u) {
-    case 20u:
-    {
-      var_1 = 20u;
-      if (false) {
-      } else {
-        break;
-      }
-      var_1 = 30u;
-      break;
-    }
-    default:
-    {
-      break;
-    }
-  }
-  var_1 = 8u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 608fd45..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_SwitchBreak_LastInCase.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,28 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42u) {
-    case 20u:
-    {
-      var_1 = 20u;
-      break;
-    }
-    default:
-    {
-      break;
-    }
-  }
-  var_1 = 7u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 847475b..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_BranchConditional_SwitchBreak_SwitchBreak_NotLastInCase.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42u) {
-    case 20u:
-    {
-      var_1 = 20u;
-      if (false) {
-        var_1 = 40u;
-        break;
-      }
-      var_1 = 50u;
-      break;
-    }
-    default:
-    {
-      break;
-    }
-  }
-  var_1 = 7u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 325db3e..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_Forward.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,17 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  var_1 = 2u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index f413dff..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_IfBreak_FromElse.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  if (false) {
-  } else {
-    var_1 = 1u;
-  }
-  var_1 = 2u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 6c47222..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_IfBreak_FromThen.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,19 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  if (false) {
-    var_1 = 1u;
-  }
-  var_1 = 2u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index c2ca74b..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_LoopBreak_MultiBlockLoop_FromBody.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,21 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  {
-    while(true) {
-      var_1 = 1u;
-      break;
-    }
-  }
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 608fd45..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_SwitchBreak_LastInCase.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,28 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42u) {
-    case 20u:
-    {
-      var_1 = 20u;
-      break;
-    }
-    default:
-    {
-      break;
-    }
-  }
-  var_1 = 7u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 847475b..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Branch_SwitchBreak_NotLastInCase.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42u) {
-    case 20u:
-    {
-      var_1 = 20u;
-      if (false) {
-        var_1 = 40u;
-        break;
-      }
-      var_1 = 50u;
-      break;
-    }
-    default:
-    {
-      break;
-    }
-  }
-  var_1 = 7u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 7949a67..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfBreak_FromElse_ForwardWithinElse.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  bool guard10 = true;
-  if (false) {
-    var_1 = 2u;
-    guard10 = false;
-  } else {
-    if (guard10) {
-      var_1 = 3u;
-      if (true) {
-        guard10 = false;
-      }
-      if (guard10) {
-        var_1 = 4u;
-        guard10 = false;
-      }
-    }
-  }
-  var_1 = 5u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 9da2f13..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfBreak_FromThenWithForward_FromElseWithForward_AlsoPremerge.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,49 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  bool guard10 = true;
-  if (false) {
-    var_1 = 2u;
-    if (true) {
-    } else {
-      guard10 = false;
-    }
-    if (guard10) {
-      var_1 = 3u;
-    }
-  } else {
-    if (guard10) {
-      var_1 = 4u;
-      if (true) {
-        guard10 = false;
-      }
-      if (guard10) {
-        var_1 = 5u;
-      }
-    }
-  }
-  if (guard10) {
-    var_1 = 6u;
-    if (false) {
-    } else {
-      guard10 = false;
-    }
-    if (guard10) {
-      var_1 = 7u;
-      guard10 = false;
-    }
-  }
-  var_1 = 8u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 73224a6..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_IfBreak_FromThen_ForwardWithinThen.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  bool guard10 = true;
-  if (false) {
-    var_1 = 2u;
-    if (true) {
-      guard10 = false;
-    }
-    if (guard10) {
-      var_1 = 3u;
-      guard10 = false;
-    }
-  } else {
-    if (guard10) {
-      var_1 = 4u;
-      guard10 = false;
-    }
-  }
-  var_1 = 5u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index e95dde7..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Else_Premerge.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,24 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  if (false) {
-  } else {
-    var_1 = 1u;
-  }
-  if (true) {
-    var_1 = 3u;
-  }
-  var_1 = 999u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 01230eb..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Nest_If.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,31 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  if (false) {
-    var_1 = 1u;
-    if (true) {
-      var_1 = 2u;
-    }
-    var_1 = 3u;
-  } else {
-    var_1 = 4u;
-    if (true) {
-    } else {
-      var_1 = 5u;
-    }
-    var_1 = 6u;
-  }
-  var_1 = 999u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 28528c9..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_NoThen_Else.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,21 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  if (false) {
-  } else {
-    var_1 = 1u;
-  }
-  var_1 = 999u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 7c67b8b..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_Else.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,22 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  if (false) {
-    var_1 = 1u;
-  } else {
-    var_1 = 2u;
-  }
-  var_1 = 999u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 7c82786..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_Else_Premerge.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,25 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  if (false) {
-    var_1 = 1u;
-  } else {
-    var_1 = 2u;
-  }
-  if (true) {
-    var_1 = 3u;
-  }
-  var_1 = 999u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 130801e..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_NoElse.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  if (false) {
-    var_1 = 1u;
-  }
-  var_1 = 999u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 24f931f..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_If_Then_Premerge.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,23 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  if (false) {
-    var_1 = 1u;
-  }
-  if (true) {
-    var_1 = 3u;
-  }
-  var_1 = 999u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index c2ca74b..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyAlwaysBreaks.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,21 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  {
-    while(true) {
-      var_1 = 1u;
-      break;
-    }
-  }
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index c4b5587..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromFalse.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,26 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  {
-    while(true) {
-      var_1 = 1u;
-      if (false) {
-      } else {
-        break;
-      }
-      var_1 = 2u;
-      continue;
-    }
-  }
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 4a68870..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromFalse_Early.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,27 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  {
-    while(true) {
-      var_1 = 1u;
-      if (false) {
-      } else {
-        break;
-      }
-      var_1 = 3u;
-      var_1 = 2u;
-      continue;
-    }
-  }
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index fc8bc94..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,25 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  {
-    while(true) {
-      var_1 = 1u;
-      if (false) {
-        break;
-      }
-      var_1 = 2u;
-      continue;
-    }
-  }
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 65067ed..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_BodyConditionallyBreaks_FromTrue_Early.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,26 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  {
-    while(true) {
-      var_1 = 1u;
-      if (false) {
-        break;
-      }
-      var_1 = 3u;
-      var_1 = 2u;
-      continue;
-    }
-  }
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 6b65e15..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_FalseToBody_TrueBreaks.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,28 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  {
-    while(true) {
-      var_1 = 1u;
-      if (false) {
-      } else {
-        break;
-      }
-      var_1 = 2u;
-      var_1 = 3u;
-      continue;
-    }
-  }
-  var_1 = 4u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 82ff151..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_Never.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,22 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  {
-    while(true) {
-      var_1 = 1u;
-      break;
-    }
-  }
-  var_1 = 3u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index a0d777f..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_FalseBackedge.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,26 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  {
-    while(true) {
-      var_1 = 1u;
-      if (false) {
-        break;
-      }
-      continue;
-    }
-  }
-  var_1 = 999u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 88c1d20..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_SingleBlock_TrueBackedge.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,27 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 0u;
-  {
-    while(true) {
-      var_1 = 1u;
-      if (false) {
-      } else {
-        break;
-      }
-      continue;
-    }
-  }
-  var_1 = 999u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 6b65e15..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Loop_TrueToBody_FalseBreaks.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,28 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  {
-    while(true) {
-      var_1 = 1u;
-      if (false) {
-      } else {
-        break;
-      }
-      var_1 = 2u;
-      var_1 = 3u;
-      continue;
-    }
-  }
-  var_1 = 4u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 1f6278e..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_Case_SintValue.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,38 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42) {
-    case -294967296:
-    {
-      var_1 = 40u;
-      break;
-    }
-    case 2000000000:
-    {
-      var_1 = 30u;
-      break;
-    }
-    case 20:
-    {
-      var_1 = 20u;
-      break;
-    }
-    default:
-    {
-      break;
-    }
-  }
-  var_1 = 7u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 46877d5..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_Case_UintValue.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,38 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42u) {
-    case 50u:
-    {
-      var_1 = 40u;
-      break;
-    }
-    case 2000000000u:
-    {
-      var_1 = 30u;
-      break;
-    }
-    case 20u:
-    {
-      var_1 = 20u;
-      break;
-    }
-    default:
-    {
-      break;
-    }
-  }
-  var_1 = 7u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index d06442a..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsCase_NoDupCases.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,34 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42u) {
-    case 40u:
-    {
-      var_1 = 40u;
-      break;
-    }
-    case 20u:
-    {
-      var_1 = 20u;
-      break;
-    }
-    default:
-    {
-      var_1 = 30u;
-      break;
-    }
-  }
-  var_1 = 7u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index d03b891..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsCase_WithDupCase.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,35 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42u) {
-    case 40u:
-    {
-      var_1 = 40u;
-      break;
-    }
-    case 20u:
-    {
-      var_1 = 20u;
-      break;
-    }
-    case 30u:
-    default:
-    {
-      var_1 = 30u;
-      break;
-    }
-  }
-  var_1 = 7u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index f540627..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_CasesWithDup.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,34 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42u) {
-    case 30u:
-    {
-      var_1 = 30u;
-      break;
-    }
-    case 20u:
-    case 40u:
-    {
-      var_1 = 20u;
-      break;
-    }
-    default:
-    {
-      break;
-    }
-  }
-  var_1 = 7u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 83e03bc..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_NoCases.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,23 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42u) {
-    default:
-    {
-      break;
-    }
-  }
-  var_1 = 7u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 608fd45..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_OneCase.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,28 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42u) {
-    case 20u:
-    {
-      var_1 = 20u;
-      break;
-    }
-    default:
-    {
-      break;
-    }
-  }
-  var_1 = 7u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 296ff46..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserCFGTest_EmitBody_Switch_DefaultIsMerge_TwoCases.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,33 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint var_1 = 0u;
-void main_1() {
-  var_1 = 1u;
-  switch(42u) {
-    case 30u:
-    {
-      var_1 = 30u;
-      break;
-    }
-    case 20u:
-    {
-      var_1 = 20u;
-      break;
-    }
-    default:
-    {
-      break;
-    }
-  }
-  var_1 = 7u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint var_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 7bfb0d1..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefFirstBlockIf_InFunction.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,19 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint x_200 = 0u;
-void main_1() {
-  uint const x_1 = 1u;
-  if (true) {
-  }
-  x_200 = x_1;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint x_200 = 0u;
-            ^
-
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
deleted file mode 100644
index 07175b6..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefFirstBlockIf_InIf.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,21 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint x_200 = 0u;
-void main_1() {
-  if (true) {
-    uint const x_1 = 1u;
-    if (true) {
-    }
-    x_200 = x_1;
-  }
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint x_200 = 0u;
-            ^
-
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
deleted file mode 100644
index bb9b93c..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_CombinatorialNonPointer_Hoisting_DefFirstBlockSwitch_InIf.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,29 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint x_200 = 0u;
-void main_1() {
-  if (true) {
-    uint const x_1 = 1u;
-    switch(1u) {
-      case 0u:
-      {
-        break;
-      }
-      default:
-      {
-        break;
-      }
-    }
-    x_200 = x_1;
-  }
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint x_200 = 0u;
-            ^
-
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
deleted file mode 100644
index a553db5..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromElseAndThen.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,43 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint x_1 = 0u;
-thread bool x_7 = false;
-thread bool x_8 = false;
-void main_1() {
-  bool const x_101 = x_7;
-  bool const x_102 = x_8;
-  {
-    while(true) {
-      uint x_2 = 0u;
-      if (x_101) {
-        break;
-      }
-      if (x_102) {
-        x_2 = 0u;
-        x_1 = x_2;
-        continue;
-      } else {
-        x_2 = 1u;
-        x_1 = x_2;
-        continue;
-      }
-      /* unreachable */
-    }
-  }
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint x_1 = 0u;
-            ^
-program_source:5:13: error: program scope variable must reside in constant address space
-thread bool x_7 = false;
-            ^
-program_source:6:13: error: program scope variable must reside in constant address space
-thread bool x_8 = false;
-            ^
-
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
deleted file mode 100644
index cfe0493..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserFunctionVarTest_EmitStatement_Phi_FromHeaderAndThen.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,43 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint x_1 = 0u;
-thread bool x_7 = false;
-thread bool x_8 = false;
-void main_1() {
-  bool const x_101 = x_7;
-  bool const x_102 = x_8;
-  {
-    while(true) {
-      uint x_2 = 0u;
-      if (x_101) {
-        break;
-      }
-      x_2 = 0u;
-      if (x_102) {
-        x_2 = 1u;
-        x_1 = x_2;
-        continue;
-      } else {
-        x_1 = x_2;
-        continue;
-      }
-      /* unreachable */
-    }
-  }
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint x_1 = 0u;
-            ^
-program_source:5:13: error: program scope variable must reside in constant address space
-thread bool x_7 = false;
-            ^
-program_source:6:13: error: program scope variable must reside in constant address space
-thread bool x_8 = false;
-            ^
-
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
deleted file mode 100644
index 157278d..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Array.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,16 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread float3x4 myvar = float3x4(0.0f);
-void main_1() {
-  myvar[2u] = float4(42.0f);
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float3x4 myvar = float3x4(0.0f);
-                ^
-
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
deleted file mode 100644
index ebc2e6e..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Compound_Matrix_Vector.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,16 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread float3x4 myvar = float3x4(0.0f);
-void main_1() {
-  myvar[2u][3u] = 42.0f;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float3x4 myvar = float3x4(0.0f);
-                ^
-
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
deleted file mode 100644
index 75c2765..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_DereferenceBase.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,17 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-void x_200(thread uint2* const x_1) {
-  uint const x_3 = x_1[0u];
-}
-void main_1() {
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:5:14: error: cannot initialize a variable of type 'const uint' (aka 'const unsigned int') with an lvalue of type 'uint2' (vector of 2 'unsigned int' values)
-  uint const x_3 = x_1[0u];
-             ^     ~~~~~~~
-
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
deleted file mode 100644
index 157278d..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Matrix.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,16 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread float3x4 myvar = float3x4(0.0f);
-void main_1() {
-  myvar[2u] = float4(42.0f);
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:17: error: program scope variable must reside in constant address space
-thread float3x4 myvar = float3x4(0.0f);
-                ^
-
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
deleted file mode 100644
index 54af741..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Struct.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,20 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct S {
-  float field0;
-  float age;
-};
-
-thread S myvar = {};
-void main_1() {
-  myvar.age = 42.0f;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:8:10: error: program scope variable must reside in constant address space
-thread S myvar = {};
-         ^
-
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
deleted file mode 100644
index 0d90226..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Struct_DifferOnlyMemberName.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,29 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct S {
-  float field0;
-  float age;
-};
-struct S_1 {
-  float field0;
-  float ancientness;
-};
-
-thread S myvar = {};
-thread S_1 myvar2 = {};
-void main_1() {
-  myvar.age = 42.0f;
-  myvar2.ancientness = 420.0f;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:12:10: error: program scope variable must reside in constant address space
-thread S myvar = {};
-         ^
-program_source:13:12: error: program scope variable must reside in constant address space
-thread S_1 myvar2 = {};
-           ^
-
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
deleted file mode 100644
index 9a4bd54..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_Struct_RuntimeArray.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:f32 @offset(0)
-  age:array<f32> @offset(4)
-}
-
-$B1: {  # root
-  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%main_1 = func():void {
-  $B2: {
-    %3:ptr<storage, f32, read_write> = access %myvar, 1u, 2u
-    store %3, 42.0f
-    ret
-  }
-}
-%tint_symbol = @fragment func():void {
-  $B3: {
-    %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
deleted file mode 100644
index 0d8d319..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorNonConstIndex.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,21 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint4 myvar = 0u;
-thread uint4 x_10 = 0u;
-void main_1() {
-  uint const a_dynamic_index = x_10[2u];
-  myvar[a_dynamic_index] = 42u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint4 myvar = 0u;
-             ^
-program_source:5:14: error: program scope variable must reside in constant address space
-thread uint4 x_10 = 0u;
-             ^
-
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
deleted file mode 100644
index 366cfc3..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_AccessChain_VectorSwizzle.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,16 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint4 myvar = 0u;
-void main_1() {
-  myvar[2u] = 42u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:14: error: program scope variable must reside in constant address space
-thread uint4 myvar = 0u;
-             ^
-
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
deleted file mode 100644
index 80b39e4..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_CopyMemory_Scalar_Function_To_Private.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,17 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint x_2 = 0u;
-void main_1() {
-  uint x_1 = 0u;
-  x_2 = x_1;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint x_2 = 0u;
-            ^
-
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
deleted file mode 100644
index fb8955a..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_EmitStatement_StoreToModuleScopeVar.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,16 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-
-thread uint x_1 = 0u;
-void main_1() {
-  x_1 = 42u;
-}
-fragment void tint_symbol() {
-  main_1();
-}
-program_source:4:13: error: program scope variable must reside in constant address space
-thread uint x_1 = 0u;
-            ^
-
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
deleted file mode 100644
index 8800a72..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_ThroughAccessChain_Cascaded.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,32 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:u32 @offset(0)
-  field1:array<u32> @offset(4)
-}
-
-$B1: {  # root
-  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%main_1 = func():void {
-  $B2: {
-    %3:ptr<storage, u32, read_write> = access %myvar, 1u, 1u
-    store %3, 0u
-    ret
-  }
-}
-%tint_symbol = @fragment func():void {
-  $B3: {
-    %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
deleted file mode 100644
index 690eeb2..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_ThroughAccessChain_NonCascaded.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,34 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:u32 @offset(0)
-  field1:array<u32> @offset(4)
-}
-
-$B1: {  # root
-  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%main_1 = func():void {
-  $B2: {
-    %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: {
-    %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
deleted file mode 100644
index 690eeb2..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserMemoryTest_RemapStorageBuffer_ThroughAccessChain_NonCascaded_InBoundsAccessChain.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,34 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:u32 @offset(0)
-  field1:array<u32> @offset(4)
-}
-
-$B1: {  # root
-  %myvar:ptr<storage, S, read_write> = var @binding_point(0, 0)
-}
-
-%main_1 = func():void {
-  $B2: {
-    %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: {
-    %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/SpvParserTest_EmitFunctions_Function_EntryPoint_Vertex.spvasm.expected.ir.msl b/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_Vertex.spvasm.expected.ir.msl
deleted file mode 100644
index c466e7d..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserTest_EmitFunctions_Function_EntryPoint_Vertex.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,19 +0,0 @@
-SKIP: FAILED
-
-#include <metal_stdlib>
-using namespace metal;
-struct main_out {
-  float4 x_2_1 [[position]];
-};
-
-thread float4 x_2 = 0.0f;
-void main_1() {
-}
-vertex main_out tint_symbol() {
-  main_1();
-  return {.x_2_1=x_2};
-}
-program_source:7:15: error: program scope variable must reside in constant address space
-thread float4 x_2 = 0.0f;
-              ^
-
diff --git a/test/tint/var/inferred/global.wgsl.expected.ir.msl b/test/tint/var/inferred/global.wgsl.expected.ir.msl
index d60fbc5..95b79fc 100644
--- a/test/tint/var/inferred/global.wgsl.expected.ir.msl
+++ b/test/tint/var/inferred/global.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 struct MyStruct {
@@ -17,135 +15,57 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread int* v1;
+  thread uint* v2;
+  thread float* v3;
+  thread int3* v4;
+  thread uint3* v5;
+  thread float3* v6;
+  thread MyStruct* v7;
+  thread tint_array<float, 10>* v8;
+  thread int* v9;
+  thread uint* v10;
+  thread float* v11;
+  thread MyStruct* v12;
+  thread MyStruct* v13;
+  thread tint_array<float, 10>* v14;
+  thread int3* v15;
+  thread float3* v16;
+};
 
-thread int v1 = 1;
-thread uint v2 = 1u;
-thread float v3 = 1.0f;
-thread int3 v4 = int3(1);
-thread uint3 v5 = uint3(1u, 2u, 3u);
-thread float3 v6 = float3(1.0f, 2.0f, 3.0f);
-thread MyStruct v7 = MyStruct{.f1=1.0f};
-thread tint_array<float, 10> v8 = tint_array<float, 10>{};
-thread int v9 = 0;
-thread uint v10 = 0u;
-thread float v11 = 0.0f;
-thread MyStruct v12 = MyStruct{};
-thread MyStruct v13 = MyStruct{};
-thread tint_array<float, 10> v14 = tint_array<float, 10>{};
-thread int3 v15 = int3(1, 2, 3);
-thread float3 v16 = float3(1.0f, 2.0f, 3.0f);
 kernel void f() {
-  int const l1 = v1;
-  uint const l2 = v2;
-  float const l3 = v3;
-  int3 const l4 = v4;
-  uint3 const l5 = v5;
-  float3 const l6 = v6;
-  MyStruct const l7 = v7;
-  tint_array<float, 10> const l8 = v8;
-  int const l9 = v9;
-  uint const l10 = v10;
-  float const l11 = v11;
-  MyStruct const l12 = v12;
-  MyStruct const l13 = v13;
-  tint_array<float, 10> const l14 = v14;
-  int3 const l15 = v15;
-  float3 const l16 = v16;
+  thread int v1 = 1;
+  thread uint v2 = 1u;
+  thread float v3 = 1.0f;
+  thread int3 v4 = int3(1);
+  thread uint3 v5 = uint3(1u, 2u, 3u);
+  thread float3 v6 = float3(1.0f, 2.0f, 3.0f);
+  thread MyStruct v7 = MyStruct{.f1=1.0f};
+  thread tint_array<float, 10> v8 = tint_array<float, 10>{};
+  thread int v9 = 0;
+  thread uint v10 = 0u;
+  thread float v11 = 0.0f;
+  thread MyStruct v12 = MyStruct{};
+  thread MyStruct v13 = MyStruct{};
+  thread tint_array<float, 10> v14 = tint_array<float, 10>{};
+  thread int3 v15 = int3(1, 2, 3);
+  thread float3 v16 = float3(1.0f, 2.0f, 3.0f);
+  tint_module_vars_struct const tint_module_vars = {.v1=(&v1), .v2=(&v2), .v3=(&v3), .v4=(&v4), .v5=(&v5), .v6=(&v6), .v7=(&v7), .v8=(&v8), .v9=(&v9), .v10=(&v10), .v11=(&v11), .v12=(&v12), .v13=(&v13), .v14=(&v14), .v15=(&v15), .v16=(&v16)};
+  int const l1 = (*tint_module_vars.v1);
+  uint const l2 = (*tint_module_vars.v2);
+  float const l3 = (*tint_module_vars.v3);
+  int3 const l4 = (*tint_module_vars.v4);
+  uint3 const l5 = (*tint_module_vars.v5);
+  float3 const l6 = (*tint_module_vars.v6);
+  MyStruct const l7 = (*tint_module_vars.v7);
+  tint_array<float, 10> const l8 = (*tint_module_vars.v8);
+  int const l9 = (*tint_module_vars.v9);
+  uint const l10 = (*tint_module_vars.v10);
+  float const l11 = (*tint_module_vars.v11);
+  MyStruct const l12 = (*tint_module_vars.v12);
+  MyStruct const l13 = (*tint_module_vars.v13);
+  tint_array<float, 10> const l14 = (*tint_module_vars.v14);
+  int3 const l15 = (*tint_module_vars.v15);
+  float3 const l16 = (*tint_module_vars.v16);
 }
-program_source:19:12: error: program scope variable must reside in constant address space
-thread int v1 = 1;
-           ^
-program_source:20:13: error: program scope variable must reside in constant address space
-thread uint v2 = 1u;
-            ^
-program_source:21:14: error: program scope variable must reside in constant address space
-thread float v3 = 1.0f;
-             ^
-program_source:22:13: error: program scope variable must reside in constant address space
-thread int3 v4 = int3(1);
-            ^
-program_source:23:14: error: program scope variable must reside in constant address space
-thread uint3 v5 = uint3(1u, 2u, 3u);
-             ^
-program_source:24:15: error: program scope variable must reside in constant address space
-thread float3 v6 = float3(1.0f, 2.0f, 3.0f);
-              ^
-program_source:25:17: error: program scope variable must reside in constant address space
-thread MyStruct v7 = MyStruct{.f1=1.0f};
-                ^
-program_source:26:30: error: program scope variable must reside in constant address space
-thread tint_array<float, 10> v8 = tint_array<float, 10>{};
-                             ^
-program_source:27:12: error: program scope variable must reside in constant address space
-thread int v9 = 0;
-           ^
-program_source:28:13: error: program scope variable must reside in constant address space
-thread uint v10 = 0u;
-            ^
-program_source:29:14: error: program scope variable must reside in constant address space
-thread float v11 = 0.0f;
-             ^
-program_source:30:17: error: program scope variable must reside in constant address space
-thread MyStruct v12 = MyStruct{};
-                ^
-program_source:31:17: error: program scope variable must reside in constant address space
-thread MyStruct v13 = MyStruct{};
-                ^
-program_source:32:30: error: program scope variable must reside in constant address space
-thread tint_array<float, 10> v14 = tint_array<float, 10>{};
-                             ^
-program_source:33:13: error: program scope variable must reside in constant address space
-thread int3 v15 = int3(1, 2, 3);
-            ^
-program_source:34:15: error: program scope variable must reside in constant address space
-thread float3 v16 = float3(1.0f, 2.0f, 3.0f);
-              ^
-program_source:36:13: warning: unused variable 'l1' [-Wunused-variable]
-  int const l1 = v1;
-            ^
-program_source:37:14: warning: unused variable 'l2' [-Wunused-variable]
-  uint const l2 = v2;
-             ^
-program_source:38:15: warning: unused variable 'l3' [-Wunused-variable]
-  float const l3 = v3;
-              ^
-program_source:39:14: warning: unused variable 'l4' [-Wunused-variable]
-  int3 const l4 = v4;
-             ^
-program_source:40:15: warning: unused variable 'l5' [-Wunused-variable]
-  uint3 const l5 = v5;
-              ^
-program_source:41:16: warning: unused variable 'l6' [-Wunused-variable]
-  float3 const l6 = v6;
-               ^
-program_source:42:18: warning: unused variable 'l7' [-Wunused-variable]
-  MyStruct const l7 = v7;
-                 ^
-program_source:43:31: warning: unused variable 'l8' [-Wunused-variable]
-  tint_array<float, 10> const l8 = v8;
-                              ^
-program_source:44:13: warning: unused variable 'l9' [-Wunused-variable]
-  int const l9 = v9;
-            ^
-program_source:45:14: warning: unused variable 'l10' [-Wunused-variable]
-  uint const l10 = v10;
-             ^
-program_source:46:15: warning: unused variable 'l11' [-Wunused-variable]
-  float const l11 = v11;
-              ^
-program_source:47:18: warning: unused variable 'l12' [-Wunused-variable]
-  MyStruct const l12 = v12;
-                 ^
-program_source:48:18: warning: unused variable 'l13' [-Wunused-variable]
-  MyStruct const l13 = v13;
-                 ^
-program_source:49:31: warning: unused variable 'l14' [-Wunused-variable]
-  tint_array<float, 10> const l14 = v14;
-                              ^
-program_source:50:14: warning: unused variable 'l15' [-Wunused-variable]
-  int3 const l15 = v15;
-             ^
-program_source:51:16: warning: unused variable 'l16' [-Wunused-variable]
-  float3 const l16 = v16;
-               ^
-
diff --git a/test/tint/var/initialization/function/nested_structs.wgsl.expected.ir.msl b/test/tint/var/initialization/function/nested_structs.wgsl.expected.ir.msl
index ff8cfd2..4c4cde8 100644
--- a/test/tint/var/initialization/function/nested_structs.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/function/nested_structs.wgsl.expected.ir.msl
@@ -1,39 +1,22 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S1 {
+  int i;
+};
+struct S2 {
+  S1 s1;
+};
+struct S3 {
+  S2 s2;
+};
+struct tint_module_vars_struct {
+  device int* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S1 = struct @align(4) {
-  i:i32 @offset(0)
+int f(S3 s3) {
+  return s3.s2.s1.i;
 }
-
-S2 = struct @align(4) {
-  s1:S1 @offset(0)
+kernel void tint_symbol(device int* out [[buffer(0)]]) {
+  tint_module_vars_struct const tint_module_vars = {.out=out};
+  (*tint_module_vars.out) = f(S3{.s2=S2{.s1=S1{.i=42}}});
 }
-
-S3 = struct @align(4) {
-  s2:S2 @offset(0)
-}
-
-$B1: {  # root
-  %out:ptr<storage, i32, read_write> = var @binding_point(0, 0)
-}
-
-%f = func(%s3:S3):i32 {
-  $B2: {
-    %4:i32 = access %s3, 0u, 0u, 0u
-    ret %4
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %6:i32 = call %f, S3(S2(S1(42i)))
-    store %out, %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/var/initialization/private/array/array_i32.wgsl.expected.ir.msl b/test/tint/var/initialization/private/array/array_i32.wgsl.expected.ir.msl
index 9f98115..54ddf72 100644
--- a/test/tint/var/initialization/private/array/array_i32.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/array/array_i32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,23 +12,15 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<tint_array<int, 3>, 2>* zero;
+  thread tint_array<tint_array<int, 3>, 2>* init;
+};
 
-thread tint_array<tint_array<int, 3>, 2> zero = {};
-thread tint_array<tint_array<int, 3>, 2> init = tint_array<tint_array<int, 3>, 2>{tint_array<int, 3>{1, 2, 3}, tint_array<int, 3>{4, 5, 6}};
 kernel void tint_symbol() {
-  tint_array<tint_array<int, 3>, 2> v0 = zero;
-  tint_array<tint_array<int, 3>, 2> v1 = init;
+  thread tint_array<tint_array<int, 3>, 2> zero = {};
+  thread tint_array<tint_array<int, 3>, 2> init = tint_array<tint_array<int, 3>, 2>{tint_array<int, 3>{1, 2, 3}, tint_array<int, 3>{4, 5, 6}};
+  tint_module_vars_struct const tint_module_vars = {.zero=(&zero), .init=(&init)};
+  tint_array<tint_array<int, 3>, 2> v0 = (*tint_module_vars.zero);
+  tint_array<tint_array<int, 3>, 2> v1 = (*tint_module_vars.init);
 }
-program_source:16:42: error: program scope variable must reside in constant address space
-thread tint_array<tint_array<int, 3>, 2> zero = {};
-                                         ^
-program_source:17:42: error: program scope variable must reside in constant address space
-thread tint_array<tint_array<int, 3>, 2> init = tint_array<tint_array<int, 3>, 2>{tint_array<int, 3>{1, 2, 3}, tint_array<int, 3>{4, 5, 6}};
-                                         ^
-program_source:19:37: warning: unused variable 'v0' [-Wunused-variable]
-  tint_array<tint_array<int, 3>, 2> v0 = zero;
-                                    ^
-program_source:20:37: warning: unused variable 'v1' [-Wunused-variable]
-  tint_array<tint_array<int, 3>, 2> v1 = init;
-                                    ^
-
diff --git a/test/tint/var/initialization/private/array/i32.wgsl.expected.ir.msl b/test/tint/var/initialization/private/array/i32.wgsl.expected.ir.msl
index 92d7aa1..0d212a7 100644
--- a/test/tint/var/initialization/private/array/i32.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/array/i32.wgsl.expected.ir.msl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #include <metal_stdlib>
 using namespace metal;
 template<typename T, size_t N>
@@ -14,23 +12,15 @@
   T elements[N];
 };
 
+struct tint_module_vars_struct {
+  thread tint_array<int, 3>* zero;
+  thread tint_array<int, 3>* init;
+};
 
-thread tint_array<int, 3> zero = {};
-thread tint_array<int, 3> init = tint_array<int, 3>{1, 2, 3};
 kernel void tint_symbol() {
-  tint_array<int, 3> v0 = zero;
-  tint_array<int, 3> v1 = init;
+  thread tint_array<int, 3> zero = {};
+  thread tint_array<int, 3> init = tint_array<int, 3>{1, 2, 3};
+  tint_module_vars_struct const tint_module_vars = {.zero=(&zero), .init=(&init)};
+  tint_array<int, 3> v0 = (*tint_module_vars.zero);
+  tint_array<int, 3> v1 = (*tint_module_vars.init);
 }
-program_source:16:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 3> zero = {};
-                          ^
-program_source:17:27: error: program scope variable must reside in constant address space
-thread tint_array<int, 3> init = tint_array<int, 3>{1, 2, 3};
-                          ^
-program_source:19:22: warning: unused variable 'v0' [-Wunused-variable]
-  tint_array<int, 3> v0 = zero;
-                     ^
-program_source:20:22: warning: unused variable 'v1' [-Wunused-variable]
-  tint_array<int, 3> v1 = init;
-                     ^
-
diff --git a/test/tint/var/initialization/private/matrix.wgsl.expected.ir.msl b/test/tint/var/initialization/private/matrix.wgsl.expected.ir.msl
index 2a58c88..bd69c3c 100644
--- a/test/tint/var/initialization/private/matrix.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/matrix.wgsl.expected.ir.msl
@@ -1,6 +1,10 @@
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread float2x3* v;
+};
 
 kernel void tint_symbol() {
   thread float2x3 v = float2x3(0.0f);
+  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
 }
diff --git a/test/tint/var/initialization/private/nested_structs.wgsl.expected.ir.msl b/test/tint/var/initialization/private/nested_structs.wgsl.expected.ir.msl
index 35028b3..7e74110 100644
--- a/test/tint/var/initialization/private/nested_structs.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/nested_structs.wgsl.expected.ir.msl
@@ -1,35 +1,21 @@
-SKIP: FAILED
+#include <metal_stdlib>
+using namespace metal;
+struct S1 {
+  int i;
+};
+struct S2 {
+  S1 s1;
+};
+struct S3 {
+  S2 s2;
+};
+struct tint_module_vars_struct {
+  thread S3* P;
+  device int* out;
+};
 
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S1 = struct @align(4) {
-  i:i32 @offset(0)
+kernel void tint_symbol(device int* out [[buffer(0)]]) {
+  thread S3 P = S3{.s2=S2{.s1=S1{.i=42}}};
+  tint_module_vars_struct const tint_module_vars = {.P=(&P), .out=out};
+  (*tint_module_vars.out) = (*tint_module_vars.P).s2.s1.i;
 }
-
-S2 = struct @align(4) {
-  s1:S1 @offset(0)
-}
-
-S3 = struct @align(4) {
-  s2:S2 @offset(0)
-}
-
-$B1: {  # root
-  %P:ptr<private, S3, read_write> = var, S3(S2(S1(42i)))
-  %out:ptr<storage, i32, read_write> = var @binding_point(0, 0)
-}
-
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B2: {
-    %4:ptr<private, i32, read_write> = access %P, 0u, 0u, 0u
-    %5:i32 = load %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/var/initialization/private/scalar.wgsl.expected.ir.msl b/test/tint/var/initialization/private/scalar.wgsl.expected.ir.msl
index 66ade84..66e321b 100644
--- a/test/tint/var/initialization/private/scalar.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/scalar.wgsl.expected.ir.msl
@@ -1,6 +1,10 @@
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int* v;
+};
 
 kernel void tint_symbol() {
   thread int v = 0;
+  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
 }
diff --git a/test/tint/var/initialization/private/struct.wgsl.expected.ir.msl b/test/tint/var/initialization/private/struct.wgsl.expected.ir.msl
index 4125dab..55b3453 100644
--- a/test/tint/var/initialization/private/struct.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/struct.wgsl.expected.ir.msl
@@ -4,7 +4,11 @@
   int a;
   float b;
 };
+struct tint_module_vars_struct {
+  thread S* v;
+};
 
 kernel void tint_symbol() {
   thread S v = {};
+  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
 }
diff --git a/test/tint/var/initialization/private/vector.wgsl.expected.ir.msl b/test/tint/var/initialization/private/vector.wgsl.expected.ir.msl
index 66b2045..31ca65f 100644
--- a/test/tint/var/initialization/private/vector.wgsl.expected.ir.msl
+++ b/test/tint/var/initialization/private/vector.wgsl.expected.ir.msl
@@ -1,6 +1,10 @@
 #include <metal_stdlib>
 using namespace metal;
+struct tint_module_vars_struct {
+  thread int3* v;
+};
 
 kernel void tint_symbol() {
   thread int3 v = 0;
+  tint_module_vars_struct const tint_module_vars = {.v=(&v)};
 }
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
deleted file mode 100644
index 9fbc5d1..0000000
--- a/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,58 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # 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: {
-    %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: {
-    %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
deleted file mode 100644
index 11752b8..0000000
--- a/test/tint/vk-gl-cts/api/descriptor_set/descriptor_set_layout_binding/layout_binding_order/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,61 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # 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: {
-    %6:ptr<uniform, i32, read> = access %x_6, 0u
-    %7:i32 = load %6
-    %x_25:i32 = let %7
-    %9:ptr<storage, i32, read_write> = access %x_4, 0u
-    store %9, %x_25
-    %10:ptr<uniform, i32, read> = access %x_8, 0u
-    %11:i32 = load %10
-    %x_28:i32 = let %11
-    %13:ptr<storage, i32, read_write> = access %x_4, 1u
-    store %13, %x_28
-    %14:ptr<uniform, i32, read> = access %x_10, 0u
-    %15:i32 = load %14
-    %x_31:i32 = let %15
-    %17:ptr<storage, i32, read_write> = access %x_4, 2u
-    store %17, %x_31
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B3: {
-    %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/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
deleted file mode 100644
index 2cee44b..0000000
--- a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,31 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: block0 = struct @align(16) {
-  data:vec4<f32> @offset(0)
-}
-
-$B1: {  # root
-  %x_4:ptr<storage, block0, read_write> = var @binding_point(0, 1)
-}
-
-%main_1 = func():void {
-  $B2: {
-    %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: {
-    %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
deleted file mode 100644
index 2cee44b..0000000
--- a/test/tint/vk-gl-cts/binding_model/dynamic_offset/shader_reuse_differing_layout_compute/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,31 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: block0 = struct @align(16) {
-  data:vec4<f32> @offset(0)
-}
-
-$B1: {  # root
-  %x_4:ptr<storage, block0, read_write> = var @binding_point(0, 1)
-}
-
-%main_1 = func():void {
-  $B2: {
-    %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: {
-    %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/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
deleted file mode 100644
index 18ecc8e..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,82 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: theSSBO = struct @align(4) {
-  out_data:i32 @offset(0)
-}
-
-$B1: {  # root
-  %x_4:ptr<storage, theSSBO, read_write> = var @binding_point(0, 0)
-}
-
-%main_1 = func():void {
-  $B2: {
-    %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: {  # 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: {  # true
-            exit_if  # if_1
-          }
-          $B6: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        continue  # -> $B4
-      }
-      $B4: {  # 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
-    %19:vec2<f32> = mul vec2<f32>(1.0f), %18
-    %x_41:vec2<f32> = let %19
-    loop [b: $B7] {  # loop_2
-      $B7: {  # body
-        %21:f32 = access %x_41, 0u
-        %22:bool = lt 1.0f, %21
-        if %22 [t: $B8] {  # if_2
-          $B8: {  # true
-            exit_loop  # loop_2
-          }
-        }
-        %23:void = msl.threadgroup_barrier 4u
-        exit_loop  # loop_2
-      }
-    }
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B9: {
-    %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/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
deleted file mode 100644
index afab298..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/early-return-and-barrier/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,85 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: theSSBO = struct @align(4) {
-  out_data:i32 @offset(0)
-}
-
-$B1: {  # root
-  %x_4:ptr<storage, theSSBO, read_write> = var @binding_point(0, 0)
-}
-
-%main_1 = func():void {
-  $B2: {
-    %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: {  # body
-        %x_33:ptr<function, i32, read_write> = var
-        %8:mat2x2<f32> = load %x_30_phi
-        store %x_30, %8
-        %9:i32 = load %x_32_phi
-        %x_32:i32 = let %9
-        %11:bool = gt %x_32, 0i
-        if %11 [t: $B5, f: $B6] {  # if_1
-          $B5: {  # true
-            exit_if  # if_1
-          }
-          $B6: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        continue  # -> $B4
-      }
-      $B4: {  # continuing
-        %12:i32 = sub %x_32, 1i
-        store %x_33, %12
-        store %x_30_phi, mat2x2<f32>(vec2<f32>(1.0f, 0.0f), vec2<f32>(0.0f, 1.0f))
-        %13:i32 = load %x_33
-        store %x_32_phi, %13
-        next_iteration  # -> $B3
-      }
-    }
-    %14:ptr<function, vec2<f32>, read_write> = access %x_30, 0u
-    %15:vec2<f32> = load %14
-    %16:vec2<f32> = sub %15, vec2<f32>(1.0f, 0.0f)
-    %17:ptr<function, vec2<f32>, read_write> = access %x_30, 1u
-    %18:vec2<f32> = load %17
-    %19:vec2<f32> = sub %18, vec2<f32>(0.0f, 1.0f)
-    %20:mat2x2<f32> = construct %16, %19
-    %21:vec2<f32> = mul vec2<f32>(1.0f), %20
-    %x_41:vec2<f32> = let %21
-    loop [b: $B7] {  # loop_2
-      $B7: {  # body
-        %23:f32 = access %x_41, 0u
-        %24:bool = lt 1.0f, %23
-        if %24 [t: $B8] {  # if_2
-          $B8: {  # true
-            exit_loop  # loop_2
-          }
-        }
-        %25:void = msl.threadgroup_barrier 4u
-        exit_loop  # loop_2
-      }
-    }
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B9: {
-    %27: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.spvasm.expected.ir.msl b/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.ir.msl
deleted file mode 100644
index 9fad2d20..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,96 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: doesNotMatter = struct @align(4) {
-  x_compute_data:array<f32> @offset(0)
-}
-
-$B1: {  # root
-  %x_9:ptr<storage, doesNotMatter, read_write> = var @binding_point(0, 0)
-}
-
-%nb_mod_ = func():f32 {
-  $B2: {
-    %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] {  # loop_1
-      $B3: {  # body
-        %x_50:ptr<function, f32, read_write> = var
-        store %x_56, 0.0f
-        if true [t: $B4, f: $B5] {  # if_1
-          $B4: {  # true
-            exit_if  # if_1
-          }
-          $B5: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        store %GLF_live1i, 0i
-        loop [b: $B6] {  # loop_2
-          $B6: {  # body
-            store %x_51, 0.0f
-            if true [t: $B7, f: $B8] {  # if_2
-              $B7: {  # true
-                exit_if  # if_2
-              }
-              $B8: {  # false
-                exit_loop  # loop_2
-              }
-            }
-            if false [t: $B9] {  # if_3
-              $B9: {  # 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
-          }
-        }
-        %12:f32 = load %x_51
-        %13:bool = lte 5.0f, %12
-        if %13 [t: $B10] {  # if_4
-          $B10: {  # true
-            %14:f32 = load %x_51
-            store %x_56, %14
-            exit_loop  # loop_1
-          }
-        }
-        ret 42.0f
-      }
-    }
-    %15:f32 = load %x_56
-    ret %15
-  }
-}
-%main_1 = func():void {
-  $B11: {
-    %17:f32 = call %nb_mod_
-    %x_32:f32 = let %17
-    %19:ptr<storage, f32, read_write> = access %x_9, 0u, 0i
-    store %19, %x_32
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B12: {
-    %21: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
deleted file mode 100644
index ed79910..0000000
--- a/test/tint/vk-gl-cts/graphicsfuzz/two-nested-for-loops-with-returns/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,100 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: doesNotMatter = struct @align(4) {
-  x_compute_data:array<f32> @offset(0)
-}
-
-$B1: {  # root
-  %x_9:ptr<storage, doesNotMatter, read_write> = var @binding_point(0, 0)
-}
-
-%nb_mod_ = func():f32 {
-  $B2: {
-    %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] {  # loop_1
-      $B3: {  # 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: $B4, f: $B5] {  # if_1
-          $B4: {  # true
-            exit_if  # if_1
-          }
-          $B5: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        store %GLF_live1i, 0i
-        loop [b: $B6] {  # loop_2
-          $B6: {  # body
-            store %x_51_phi, 0.0f
-            if true [t: $B7, f: $B8] {  # if_2
-              $B7: {  # true
-                exit_if  # if_2
-              }
-              $B8: {  # false
-                exit_loop  # loop_2
-              }
-            }
-            if false [t: $B9] {  # if_3
-              $B9: {  # 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
-          }
-        }
-        %13:f32 = load %x_51_phi
-        store %x_51, %13
-        %14:f32 = load %x_51
-        %15:bool = lte 5.0f, %14
-        if %15 [t: $B10] {  # if_4
-          $B10: {  # true
-            %16:f32 = load %x_51
-            store %x_56_phi, %16
-            exit_loop  # loop_1
-          }
-        }
-        ret 42.0f
-      }
-    }
-    %17:f32 = load %x_56_phi
-    %x_56:f32 = let %17
-    ret %x_56
-  }
-}
-%main_1 = func():void {
-  $B11: {
-    %20:f32 = call %nb_mod_
-    %x_32:f32 = let %20
-    %22:ptr<storage, f32, read_write> = access %x_9, 0u, 0i
-    store %22, %x_32
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B12: {
-    %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/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
deleted file mode 100644
index 26da6db..0000000
--- a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,162 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # root
-  %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(%tint_wgid:vec3<u32>):void {
-  $B2: {
-    %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 = access %tint_wgid, 0u
-    %18:u32 = mul 128u, %17
-    store %base_index_in, %18
-    %19:u32 = access %tint_wgid, 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: {  # body
-        %21:i32 = load %i
-        %22:bool = lt %21, 256i
-        if %22 [t: $B5, f: $B6] {  # if_1
-          $B5: {  # true
-            exit_if  # if_1
-          }
-          $B6: {  # 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: {  # true
-            %27:u32 = load %base_index_out
-            %x_77:u32 = let %27
-            %29:i32 = load %index_out0
-            %x_78:i32 = let %29
-            %31:u32 = bitcast %x_78
-            %32:u32 = add %x_77, %31
-            %33:ptr<storage, i32, read_write> = access %x_15, 0u, %32
-            %34:ptr<storage, i32, read_write> = let %33
-            %35:u32 = load %base_index_in
-            %36:u32 = let %35
-            %37:i32 = load %index_in0
-            %38:u32 = bitcast %37
-            %39:u32 = add %36, %38
-            %40:ptr<storage, i32, read> = access %x_17, 0u, %39
-            %41:i32 = load %40
-            store %34, %41
-            %42:i32 = load %index_out0
-            %43:i32 = sub %42, 1i
-            store %index_out0, %43
-            %44:i32 = load %index_in1
-            %45:i32 = sub %44, 1i
-            store %index_in1, %45
-            exit_if  # if_2
-          }
-          $B8: {  # false
-            %46:u32 = load %base_index_out
-            %x_92:u32 = let %46
-            %48:i32 = load %index_out1
-            %x_93:i32 = let %48
-            %50:u32 = bitcast %x_93
-            %51:u32 = add %x_92, %50
-            %52:ptr<storage, i32, read_write> = access %x_15, 0u, %51
-            %53:ptr<storage, i32, read_write> = let %52
-            %54:u32 = load %base_index_in
-            %55:u32 = let %54
-            %56:i32 = load %index_in1
-            %57:u32 = bitcast %56
-            %58:u32 = add %55, %57
-            %59:ptr<storage, i32, read> = access %x_19, 0u, %58
-            %60:i32 = load %59
-            store %53, %60
-            %61:i32 = load %index_out1
-            %62:i32 = sub %61, 1i
-            store %index_out1, %62
-            %63:i32 = load %index_in1
-            %64:i32 = sub %63, 1i
-            store %index_in1, %64
-            exit_if  # if_2
-          }
-        }
-        %65:i32 = load %condition_index
-        %66:i32 = load %condition_index
-        %67:i32 = add %66, 1i
-        %68:ptr<storage, i32, read> = access %x_13, 0u, %67
-        %69:i32 = load %68
-        %70:i32 = add %65, %69
-        store %condition_index, %70
-        %71:i32 = load %index_in0
-        store %temp0, %71
-        %72:i32 = load %index_in1
-        store %index_in0, %72
-        %73:i32 = load %temp0
-        store %index_in1, %73
-        %74:i32 = load %index_out0
-        store %temp1, %74
-        %75:i32 = load %index_out1
-        store %index_out0, %75
-        %76:i32 = load %temp1
-        store %index_out1, %76
-        continue  # -> $B4
-      }
-      $B4: {  # continuing
-        %77:i32 = load %i
-        %78:i32 = add %77, 1i
-        store %i, %78
-        next_iteration  # -> $B3
-      }
-    }
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(4, 1, 1) func(%gl_WorkGroupID_param:vec3<u32> [@workgroup_id]):void {
-  $B9: {
-    %81:void = call %main_1, %gl_WorkGroupID_param
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
deleted file mode 100644
index 594a41a..0000000
--- a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_overflow/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,185 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # 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: {
-    %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
-    %x_58:u32 = let %17
-    %19:u32 = mul 128u, %x_58
-    store %base_index_in, %19
-    %20:u32 = load_vector_element %gl_WorkGroupID, 0u
-    %x_61:u32 = let %20
-    %22:u32 = mul 256u, %x_61
-    store %base_index_out, %22
-    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: {  # body
-        %23:i32 = load %i
-        %x_67:i32 = let %23
-        %25:bool = lt %x_67, 256i
-        if %25 [t: $B5, f: $B6] {  # if_1
-          $B5: {  # true
-            exit_if  # if_1
-          }
-          $B6: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        %26:i32 = load %condition_index
-        %x_70:i32 = let %26
-        %28:ptr<storage, i32, read> = access %x_13, 0u, %x_70
-        %29:i32 = load %28
-        %x_72:i32 = let %29
-        %31:bool = eq %x_72, 0i
-        if %31 [t: $B7, f: $B8] {  # if_2
-          $B7: {  # true
-            %32:u32 = load %base_index_out
-            %x_77:u32 = let %32
-            %34:i32 = load %index_out0
-            %x_78:i32 = let %34
-            %36:u32 = load %base_index_in
-            %x_81:u32 = let %36
-            %38:i32 = load %index_in0
-            %x_82:i32 = let %38
-            %40:u32 = bitcast %x_82
-            %41:u32 = add %x_81, %40
-            %42:ptr<storage, i32, read> = access %x_17, 0u, %41
-            %43:i32 = load %42
-            %x_86:i32 = let %43
-            %45:u32 = bitcast %x_78
-            %46:u32 = add %x_77, %45
-            %47:ptr<storage, i32, read_write> = access %x_15, 0u, %46
-            store %47, %x_86
-            %48:i32 = load %index_out0
-            %x_88:i32 = let %48
-            %50:i32 = sub %x_88, 1i
-            store %index_out0, %50
-            %51:i32 = load %index_in1
-            %x_90:i32 = let %51
-            %53:i32 = sub %x_90, 1i
-            store %index_in1, %53
-            exit_if  # if_2
-          }
-          $B8: {  # false
-            %54:u32 = load %base_index_out
-            %x_92:u32 = let %54
-            %56:i32 = load %index_out1
-            %x_93:i32 = let %56
-            %58:u32 = load %base_index_in
-            %x_96:u32 = let %58
-            %60:i32 = load %index_in1
-            %x_97:i32 = let %60
-            %62:u32 = bitcast %x_97
-            %63:u32 = add %x_96, %62
-            %64:ptr<storage, i32, read> = access %x_19, 0u, %63
-            %65:i32 = load %64
-            %x_101:i32 = let %65
-            %67:u32 = bitcast %x_93
-            %68:u32 = add %x_92, %67
-            %69:ptr<storage, i32, read_write> = access %x_15, 0u, %68
-            store %69, %x_101
-            %70:i32 = load %index_out1
-            %x_103:i32 = let %70
-            %72:i32 = sub %x_103, 1i
-            store %index_out1, %72
-            %73:i32 = load %index_in1
-            %x_105:i32 = let %73
-            %75:i32 = sub %x_105, 1i
-            store %index_in1, %75
-            exit_if  # if_2
-          }
-        }
-        %76:i32 = load %condition_index
-        %x_107:i32 = let %76
-        %78:i32 = add %x_107, 1i
-        %79:ptr<storage, i32, read> = access %x_13, 0u, %78
-        %80:i32 = load %79
-        %x_110:i32 = let %80
-        %82:i32 = load %condition_index
-        %x_111:i32 = let %82
-        %84:i32 = add %x_111, %x_110
-        store %condition_index, %84
-        %85:i32 = load %index_in0
-        %x_113:i32 = let %85
-        store %temp0, %x_113
-        %87:i32 = load %index_in1
-        %x_114:i32 = let %87
-        store %index_in0, %x_114
-        %89:i32 = load %temp0
-        %x_115:i32 = let %89
-        store %index_in1, %x_115
-        %91:i32 = load %index_out0
-        %x_116:i32 = let %91
-        store %temp1, %x_116
-        %93:i32 = load %index_out1
-        %x_117:i32 = let %93
-        store %index_out0, %x_117
-        %95:i32 = load %temp1
-        %x_118:i32 = let %95
-        store %index_out1, %x_118
-        continue  # -> $B4
-      }
-      $B4: {  # continuing
-        %97:i32 = load %i
-        %x_119:i32 = let %97
-        %99:i32 = add %x_119, 1i
-        store %i, %99
-        next_iteration  # -> $B3
-      }
-    }
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(4, 1, 1) func(%gl_WorkGroupID_param:vec3<u32> [@workgroup_id]):void {
-  $B9: {
-    store %gl_WorkGroupID, %gl_WorkGroupID_param
-    %102: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
deleted file mode 100644
index d3fb672..0000000
--- a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,162 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # root
-  %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(%tint_wgid:vec3<u32>):void {
-  $B2: {
-    %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 = access %tint_wgid, 0u
-    %18:u32 = mul 128u, %17
-    store %base_index_in, %18
-    %19:u32 = access %tint_wgid, 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: {  # body
-        %21:i32 = load %i
-        %22:bool = lt %21, 256i
-        if %22 [t: $B5, f: $B6] {  # if_1
-          $B5: {  # true
-            exit_if  # if_1
-          }
-          $B6: {  # 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: {  # true
-            %27:u32 = load %base_index_out
-            %x_75:u32 = let %27
-            %29:i32 = load %index_out0
-            %x_76:i32 = let %29
-            %31:u32 = bitcast %x_76
-            %32:u32 = add %x_75, %31
-            %33:ptr<storage, i32, read_write> = access %x_15, 0u, %32
-            %34:ptr<storage, i32, read_write> = let %33
-            %35:u32 = load %base_index_in
-            %36:u32 = let %35
-            %37:i32 = load %index_in0
-            %38:u32 = bitcast %37
-            %39:u32 = add %36, %38
-            %40:ptr<storage, i32, read> = access %x_17, 0u, %39
-            %41:i32 = load %40
-            store %34, %41
-            %42:i32 = load %index_out0
-            %43:i32 = add %42, 1i
-            store %index_out0, %43
-            %44:i32 = load %index_in1
-            %45:i32 = add %44, 1i
-            store %index_in1, %45
-            exit_if  # if_2
-          }
-          $B8: {  # false
-            %46:u32 = load %base_index_out
-            %x_90:u32 = let %46
-            %48:i32 = load %index_out1
-            %x_91:i32 = let %48
-            %50:u32 = bitcast %x_91
-            %51:u32 = add %x_90, %50
-            %52:ptr<storage, i32, read_write> = access %x_15, 0u, %51
-            %53:ptr<storage, i32, read_write> = let %52
-            %54:u32 = load %base_index_in
-            %55:u32 = let %54
-            %56:i32 = load %index_in1
-            %57:u32 = bitcast %56
-            %58:u32 = add %55, %57
-            %59:ptr<storage, i32, read> = access %x_19, 0u, %58
-            %60:i32 = load %59
-            store %53, %60
-            %61:i32 = load %index_out1
-            %62:i32 = add %61, 1i
-            store %index_out1, %62
-            %63:i32 = load %index_in1
-            %64:i32 = add %63, 1i
-            store %index_in1, %64
-            exit_if  # if_2
-          }
-        }
-        %65:i32 = load %condition_index
-        %66:i32 = load %condition_index
-        %67:i32 = add %66, 1i
-        %68:ptr<storage, i32, read> = access %x_13, 0u, %67
-        %69:i32 = load %68
-        %70:i32 = add %65, %69
-        store %condition_index, %70
-        %71:i32 = load %index_in0
-        store %temp0, %71
-        %72:i32 = load %index_in1
-        store %index_in0, %72
-        %73:i32 = load %temp0
-        store %index_in1, %73
-        %74:i32 = load %index_out0
-        store %temp1, %74
-        %75:i32 = load %index_out1
-        store %index_out0, %75
-        %76:i32 = load %temp1
-        store %index_out1, %76
-        continue  # -> $B4
-      }
-      $B4: {  # continuing
-        %77:i32 = load %i
-        %78:i32 = add %77, 1i
-        store %i, %78
-        next_iteration  # -> $B3
-      }
-    }
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(4, 1, 1) func(%gl_WorkGroupID_param:vec3<u32> [@workgroup_id]):void {
-  $B9: {
-    %81:void = call %main_1, %gl_WorkGroupID_param
-    ret
-  }
-}
-
-unhandled variable address space
-********************************************************************
-*  The tint shader compiler has encountered an unexpected error.   *
-*                                                                  *
-*  Please help us fix this issue by 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
deleted file mode 100644
index 82a26e8..0000000
--- a/test/tint/vk-gl-cts/non_robust_buffer_access/unexecuted_oob_underflow/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,185 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 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: {  # 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: {
-    %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
-    %x_56:u32 = let %17
-    %19:u32 = mul 128u, %x_56
-    store %base_index_in, %19
-    %20:u32 = load_vector_element %gl_WorkGroupID, 0u
-    %x_59:u32 = let %20
-    %22:u32 = mul 256u, %x_59
-    store %base_index_out, %22
-    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: {  # body
-        %23:i32 = load %i
-        %x_65:i32 = let %23
-        %25:bool = lt %x_65, 256i
-        if %25 [t: $B5, f: $B6] {  # if_1
-          $B5: {  # true
-            exit_if  # if_1
-          }
-          $B6: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        %26:i32 = load %condition_index
-        %x_68:i32 = let %26
-        %28:ptr<storage, i32, read> = access %x_13, 0u, %x_68
-        %29:i32 = load %28
-        %x_70:i32 = let %29
-        %31:bool = eq %x_70, 0i
-        if %31 [t: $B7, f: $B8] {  # if_2
-          $B7: {  # true
-            %32:u32 = load %base_index_out
-            %x_75:u32 = let %32
-            %34:i32 = load %index_out0
-            %x_76:i32 = let %34
-            %36:u32 = load %base_index_in
-            %x_79:u32 = let %36
-            %38:i32 = load %index_in0
-            %x_80:i32 = let %38
-            %40:u32 = bitcast %x_80
-            %41:u32 = add %x_79, %40
-            %42:ptr<storage, i32, read> = access %x_17, 0u, %41
-            %43:i32 = load %42
-            %x_84:i32 = let %43
-            %45:u32 = bitcast %x_76
-            %46:u32 = add %x_75, %45
-            %47:ptr<storage, i32, read_write> = access %x_15, 0u, %46
-            store %47, %x_84
-            %48:i32 = load %index_out0
-            %x_86:i32 = let %48
-            %50:i32 = add %x_86, 1i
-            store %index_out0, %50
-            %51:i32 = load %index_in1
-            %x_88:i32 = let %51
-            %53:i32 = add %x_88, 1i
-            store %index_in1, %53
-            exit_if  # if_2
-          }
-          $B8: {  # false
-            %54:u32 = load %base_index_out
-            %x_90:u32 = let %54
-            %56:i32 = load %index_out1
-            %x_91:i32 = let %56
-            %58:u32 = load %base_index_in
-            %x_94:u32 = let %58
-            %60:i32 = load %index_in1
-            %x_95:i32 = let %60
-            %62:u32 = bitcast %x_95
-            %63:u32 = add %x_94, %62
-            %64:ptr<storage, i32, read> = access %x_19, 0u, %63
-            %65:i32 = load %64
-            %x_99:i32 = let %65
-            %67:u32 = bitcast %x_91
-            %68:u32 = add %x_90, %67
-            %69:ptr<storage, i32, read_write> = access %x_15, 0u, %68
-            store %69, %x_99
-            %70:i32 = load %index_out1
-            %x_101:i32 = let %70
-            %72:i32 = add %x_101, 1i
-            store %index_out1, %72
-            %73:i32 = load %index_in1
-            %x_103:i32 = let %73
-            %75:i32 = add %x_103, 1i
-            store %index_in1, %75
-            exit_if  # if_2
-          }
-        }
-        %76:i32 = load %condition_index
-        %x_105:i32 = let %76
-        %78:i32 = add %x_105, 1i
-        %79:ptr<storage, i32, read> = access %x_13, 0u, %78
-        %80:i32 = load %79
-        %x_108:i32 = let %80
-        %82:i32 = load %condition_index
-        %x_109:i32 = let %82
-        %84:i32 = add %x_109, %x_108
-        store %condition_index, %84
-        %85:i32 = load %index_in0
-        %x_111:i32 = let %85
-        store %temp0, %x_111
-        %87:i32 = load %index_in1
-        %x_112:i32 = let %87
-        store %index_in0, %x_112
-        %89:i32 = load %temp0
-        %x_113:i32 = let %89
-        store %index_in1, %x_113
-        %91:i32 = load %index_out0
-        %x_114:i32 = let %91
-        store %temp1, %x_114
-        %93:i32 = load %index_out1
-        %x_115:i32 = let %93
-        store %index_out0, %x_115
-        %95:i32 = load %temp1
-        %x_116:i32 = let %95
-        store %index_out1, %x_116
-        continue  # -> $B4
-      }
-      $B4: {  # continuing
-        %97:i32 = load %i
-        %x_117:i32 = let %97
-        %99:i32 = add %x_117, 1i
-        store %i, %99
-        next_iteration  # -> $B3
-      }
-    }
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(4, 1, 1) func(%gl_WorkGroupID_param:vec3<u32> [@workgroup_id]):void {
-  $B9: {
-    store %gl_WorkGroupID, %gl_WorkGroupID_param
-    %102: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.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
deleted file mode 100644
index cd371e5..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,72 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Buf1 = struct @align(4) {
-  result:i32 @offset(0)
-}
-
-Buf0 = struct @align(4) {
-  values:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %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: {  # body
-        %6:u32 = load %i
-        %7:bool = lt %6, 512u
-        if %7 [t: $B5, f: $B6] {  # if_1
-          $B5: {  # true
-            exit_if  # if_1
-          }
-          $B6: {  # 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: {  # true
-            %14:ptr<storage, i32, read_write> = access %x_4, 0u
-            store %14, 0i
-            exit_if  # if_2
-          }
-        }
-        continue  # -> $B4
-      }
-      $B4: {  # 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: {
-    %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
deleted file mode 100644
index 80f3ac0..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/arraylength/array-stride-larger-than-element-size/1.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,77 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Buf1 = struct @align(4) {
-  result:i32 @offset(0)
-}
-
-Buf0 = struct @align(4) {
-  values:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %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: {  # body
-        %6:u32 = load %i
-        %x_33:u32 = let %6
-        %8:bool = lt %x_33, 512u
-        if %8 [t: $B5, f: $B6] {  # if_1
-          $B5: {  # true
-            exit_if  # if_1
-          }
-          $B6: {  # false
-            exit_loop  # loop_1
-          }
-        }
-        %9:u32 = load %i
-        %x_36:u32 = let %9
-        %11:u32 = mul %x_36, 2u
-        %12:ptr<storage, u32, read_write> = access %x_7, 0u, %11
-        %13:u32 = load %12
-        %x_39:u32 = let %13
-        %15:u32 = load %i
-        %x_40:u32 = let %15
-        %17:bool = neq %x_39, %x_40
-        if %17 [t: $B7] {  # if_2
-          $B7: {  # true
-            %18:ptr<storage, i32, read_write> = access %x_4, 0u
-            store %18, 0i
-            exit_if  # if_2
-          }
-        }
-        continue  # -> $B4
-      }
-      $B4: {  # continuing
-        %19:u32 = load %i
-        %x_45:u32 = let %19
-        %21:u32 = add %x_45, 1u
-        store %i, %21
-        next_iteration  # -> $B3
-      }
-    }
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
-  $B8: {
-    %23: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
deleted file mode 100644
index 7cc7724..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,46 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %6:u32 = load_vector_element %x_2, 0u
-    %x_21:u32 = let %6
-    %8:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
-    %9:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
-    %10:u32 = load %9
-    %11:i32 = bitcast %10
-    %12:i32 = let %11
-    %13:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
-    %14:u32 = load %13
-    %15:i32 = bitcast %14
-    %16:bool = gt %12, %15
-    %17:u32 = select 0u, 1u, %16
-    store %8, %17
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void {
-  $B3: {
-    store %x_2, %x_2_param
-    %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/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
deleted file mode 100644
index ceaa51e..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthan/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,48 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %6:u32 = load_vector_element %x_2, 0u
-    %x_21:u32 = let %6
-    %8:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
-    %9:u32 = load %8
-    %x_23:u32 = let %9
-    %11:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
-    %12:u32 = load %11
-    %x_25:u32 = let %12
-    %14:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
-    %15:i32 = bitcast %x_23
-    %16:i32 = let %15
-    %17:i32 = bitcast %x_25
-    %18:bool = gt %16, %17
-    %19:u32 = select 0u, 1u, %18
-    store %14, %19
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void {
-  $B3: {
-    store %x_2, %x_2_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_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
deleted file mode 100644
index 74815d1..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,46 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %6:u32 = load_vector_element %x_2, 0u
-    %x_21:u32 = let %6
-    %8:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
-    %9:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
-    %10:u32 = load %9
-    %11:i32 = bitcast %10
-    %12:i32 = let %11
-    %13:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
-    %14:u32 = load %13
-    %15:i32 = bitcast %14
-    %16:bool = gte %12, %15
-    %17:u32 = select 0u, 1u, %16
-    store %8, %17
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void {
-  $B3: {
-    store %x_2, %x_2_param
-    %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/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
deleted file mode 100644
index 5b46a17..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_sgreaterthanequal/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,48 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %6:u32 = load_vector_element %x_2, 0u
-    %x_21:u32 = let %6
-    %8:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
-    %9:u32 = load %8
-    %x_23:u32 = let %9
-    %11:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
-    %12:u32 = load %11
-    %x_25:u32 = let %12
-    %14:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
-    %15:i32 = bitcast %x_23
-    %16:i32 = let %15
-    %17:i32 = bitcast %x_25
-    %18:bool = gte %16, %17
-    %19:u32 = select 0u, 1u, %18
-    store %14, %19
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void {
-  $B3: {
-    store %x_2, %x_2_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_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
deleted file mode 100644
index 83f4293..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,46 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %6:u32 = load_vector_element %x_2, 0u
-    %x_21:u32 = let %6
-    %8:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
-    %9:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
-    %10:u32 = load %9
-    %11:i32 = bitcast %10
-    %12:i32 = let %11
-    %13:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
-    %14:u32 = load %13
-    %15:i32 = bitcast %14
-    %16:bool = lt %12, %15
-    %17:u32 = select 0u, 1u, %16
-    store %8, %17
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void {
-  $B3: {
-    store %x_2, %x_2_param
-    %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/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
deleted file mode 100644
index ea7ed1d..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthan/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,48 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %6:u32 = load_vector_element %x_2, 0u
-    %x_21:u32 = let %6
-    %8:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
-    %9:u32 = load %8
-    %x_23:u32 = let %9
-    %11:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
-    %12:u32 = load %11
-    %x_25:u32 = let %12
-    %14:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
-    %15:i32 = bitcast %x_23
-    %16:i32 = let %15
-    %17:i32 = bitcast %x_25
-    %18:bool = lt %16, %17
-    %19:u32 = select 0u, 1u, %18
-    store %14, %19
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void {
-  $B3: {
-    store %x_2, %x_2_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_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
deleted file mode 100644
index c0f8fcc..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,46 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %6:u32 = load_vector_element %x_2, 0u
-    %x_21:u32 = let %6
-    %8:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
-    %9:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
-    %10:u32 = load %9
-    %11:i32 = bitcast %10
-    %12:i32 = let %11
-    %13:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
-    %14:u32 = load %13
-    %15:i32 = bitcast %14
-    %16:bool = lte %12, %15
-    %17:u32 = select 0u, 1u, %16
-    store %8, %17
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void {
-  $B3: {
-    store %x_2, %x_2_param
-    %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/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
deleted file mode 100644
index 7486883..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_int_compare/uint_slessthanequal/0.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,48 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %6:u32 = load_vector_element %x_2, 0u
-    %x_21:u32 = let %6
-    %8:ptr<storage, u32, read_write> = access %x_5, 0u, %x_21
-    %9:u32 = load %8
-    %x_23:u32 = let %9
-    %11:ptr<storage, u32, read_write> = access %x_6, 0u, %x_21
-    %12:u32 = load %11
-    %x_25:u32 = let %12
-    %14:ptr<storage, u32, read_write> = access %x_7, 0u, %x_21
-    %15:i32 = bitcast %x_23
-    %16:i32 = let %15
-    %17:i32 = bitcast %x_25
-    %18:bool = lte %16, %17
-    %19:u32 = select 0u, 1u, %18
-    store %14, %19
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void {
-  $B3: {
-    store %x_2, %x_2_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/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
deleted file mode 100644
index 1acef4a..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,58 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %6:u32 = load_vector_element %x_2, 0u
-    %x_20:u32 = let %6
-    %8:ptr<storage, u32, read_write> = access %x_7, 0u, %x_20
-    %9:ptr<storage, u32, read_write> = access %x_5, 0u, %x_20
-    %10:u32 = load %9
-    %11:i32 = bitcast %10
-    %12:i32 = let %11
-    %13:ptr<storage, u32, read_write> = access %x_6, 0u, %x_20
-    %14:u32 = load %13
-    %15:i32 = bitcast %14
-    %16:i32 = call %tint_div_i32, %12, %15
-    %18:u32 = bitcast %16
-    store %8, %18
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void {
-  $B3: {
-    store %x_2, %x_2_param
-    %21:void = call %main_1
-    ret
-  }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
-  $B4: {
-    %24:bool = eq %rhs, 0i
-    %25:bool = eq %lhs, -2147483648i
-    %26:bool = eq %rhs, -1i
-    %27:bool = and %25, %26
-    %28:bool = or %24, %27
-    %29:i32 = select %rhs, 1i, %28
-    %30:i32 = div %lhs, %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/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
deleted file mode 100644
index 73c5474..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_sdiv/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,60 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %6:u32 = load_vector_element %x_2, 0u
-    %x_20:u32 = let %6
-    %8:ptr<storage, u32, read_write> = access %x_5, 0u, %x_20
-    %9:u32 = load %8
-    %x_22:u32 = let %9
-    %11:ptr<storage, u32, read_write> = access %x_6, 0u, %x_20
-    %12:u32 = load %11
-    %x_24:u32 = let %12
-    %14:ptr<storage, u32, read_write> = access %x_7, 0u, %x_20
-    %15:i32 = bitcast %x_22
-    %16:i32 = let %15
-    %17:i32 = bitcast %x_24
-    %18:i32 = call %tint_div_i32, %16, %17
-    %20:u32 = bitcast %18
-    store %14, %20
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void {
-  $B3: {
-    store %x_2, %x_2_param
-    %23:void = call %main_1
-    ret
-  }
-}
-%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
-  $B4: {
-    %26:bool = eq %rhs, 0i
-    %27:bool = eq %lhs, -2147483648i
-    %28:bool = eq %rhs, -1i
-    %29:bool = and %27, %28
-    %30:bool = or %26, %29
-    %31:i32 = select %rhs, 1i, %30
-    %32:i32 = div %lhs, %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/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
deleted file mode 100644
index 399b26a..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.spvasm.expected.ir.msl
+++ /dev/null
@@ -1,41 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %5:u32 = load_vector_element %x_2, 0u
-    %x_20:u32 = let %5
-    %7:ptr<storage, u32, read_write> = access %x_6, 0u, %x_20
-    %8:ptr<storage, u32, read_write> = access %x_5, 0u, %x_20
-    %9:u32 = load %8
-    %10:i32 = bitcast %9
-    %11:i32 = negation %10
-    %12:u32 = bitcast %11
-    store %7, %12
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void {
-  $B3: {
-    store %x_2, %x_2_param
-    %15: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
deleted file mode 100644
index aa72ebe..0000000
--- a/test/tint/vk-gl-cts/spirv_assembly/instruction/compute/signed_op/uint_snegate/0-opt.wgsl.expected.ir.msl
+++ /dev/null
@@ -1,42 +0,0 @@
-SKIP: FAILED
-
-../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: S = struct @align(4) {
-  field0:array<u32> @offset(0)
-}
-
-$B1: {  # 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: {
-    %5:u32 = load_vector_element %x_2, 0u
-    %x_20:u32 = let %5
-    %7:ptr<storage, u32, read_write> = access %x_5, 0u, %x_20
-    %8:u32 = load %7
-    %x_22:u32 = let %8
-    %10:ptr<storage, u32, read_write> = access %x_6, 0u, %x_20
-    %11:i32 = bitcast %x_22
-    %12:i32 = negation %11
-    %13:u32 = bitcast %12
-    store %10, %13
-    ret
-  }
-}
-%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%x_2_param:vec3<u32> [@global_invocation_id]):void {
-  $B3: {
-    store %x_2, %x_2_param
-    %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.  *
-********************************************************************
