[ir][msl] Emit entry point stage name

Emit the entry point stage name if present.

Bug: tint:1967
Change-Id: I354d2d75ebfff1aff90f94cb8fdcb9875e1ed8fa
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/162220
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: dan sinclair <dsinclair@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/tint/lang/msl/writer/printer/printer.cc b/src/tint/lang/msl/writer/printer/printer.cc
index a105aed..105f090 100644
--- a/src/tint/lang/msl/writer/printer/printer.cc
+++ b/src/tint/lang/msl/writer/printer/printer.cc
@@ -205,7 +205,20 @@
         {
             auto out = Line();
 
-            // TODO(dsinclair): Emit function stage if any
+            switch (func->Stage()) {
+                case core::ir::Function::PipelineStage::kCompute:
+                    out << "kernel ";
+                    break;
+                case core::ir::Function::PipelineStage::kFragment:
+                    out << "fragment ";
+                    break;
+                case core::ir::Function::PipelineStage::kVertex:
+                    out << "vertex ";
+                    break;
+                case core::ir::Function::PipelineStage::kUndefined:
+                    break;
+            }
+
             // TODO(dsinclair): Handle return type attributes
 
             EmitType(out, func->ReturnType());
diff --git a/test/tint/expressions/binary/add/mat3x3-mat3x3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/mat3x3-mat3x3/f16.wgsl.expected.ir.msl
index b7d78d3..eeed4fd 100644
--- a/test/tint/expressions/binary/add/mat3x3-mat3x3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/mat3x3-mat3x3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3x3 const a = half3x3(half3(1.0h, 2.0h, 3.0h), half3(4.0h, 5.0h, 6.0h), half3(7.0h, 8.0h, 9.0h));
   half3x3 const b = half3x3(half3(-1.0h, -2.0h, -3.0h), half3(-4.0h, -5.0h, -6.0h), half3(-7.0h, -8.0h, -9.0h));
   half3x3 const r = (a + b);
diff --git a/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.ir.msl
index 57b0dbc..ca642d7 100644
--- a/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/mat3x3-mat3x3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3x3 const a = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   float3x3 const b = float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f));
   float3x3 const r = (a + b);
diff --git a/test/tint/expressions/binary/add/scalar-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/scalar-scalar/f16.wgsl.expected.ir.msl
index 167594a..53acd02 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/scalar-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half const a = 1.0h;
   half const b = 2.0h;
   half const r = (a + b);
diff --git a/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl.expected.ir.msl
index a39f4a5..4863ab8 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/scalar-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float const a = 1.0f;
   float const b = 2.0f;
   float const r = (a + b);
diff --git a/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl.expected.ir.msl
index 476b496..830879b 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 1;
   int const b = 2;
   int const r = (a + b);
diff --git a/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl.expected.ir.msl
index 7f82e9e..4646db0 100644
--- a/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
   uint const r = (a + b);
diff --git a/test/tint/expressions/binary/add/scalar-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/scalar-vec3/f16.wgsl.expected.ir.msl
index bf2e0d9..3f3b4a1 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/scalar-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half const a = 4.0h;
   half3 const b = half3(1.0h, 2.0h, 3.0h);
   half3 const r = (a + b);
diff --git a/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.ir.msl
index 3a18e8a..bcc0743 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/scalar-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float const a = 4.0f;
   float3 const b = float3(1.0f, 2.0f, 3.0f);
   float3 const r = (a + b);
diff --git a/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.ir.msl
index f7ceea0..3ae3f08 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/scalar-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 4;
   int3 const b = int3(1, 2, 3);
   int3 const r = (a + b);
diff --git a/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.ir.msl
index 6d0b818..8b7d4e3 100644
--- a/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/scalar-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(1u, 2u, 3u);
   uint3 const r = (a + b);
diff --git a/test/tint/expressions/binary/add/vec3-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/vec3-scalar/f16.wgsl.expected.ir.msl
index d4f2139..87ec5ad 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/vec3-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 const a = half3(1.0h, 2.0h, 3.0h);
   half const b = 4.0h;
   half3 const r = (a + b);
diff --git a/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.ir.msl
index de68c8a..b661e54 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/vec3-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float const b = 4.0f;
   float3 const r = (a + b);
diff --git a/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.ir.msl
index a4b3afc..cd7ba07 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/vec3-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 4;
   int3 const r = (a + b);
diff --git a/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.ir.msl
index 849eea7..efc31f6 100644
--- a/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/vec3-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 4u;
   uint3 const r = (a + b);
diff --git a/test/tint/expressions/binary/add/vec3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/vec3-vec3/f16.wgsl.expected.ir.msl
index a249baa..44142bd 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/vec3-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 const a = half3(1.0h, 2.0h, 3.0h);
   half3 const b = half3(4.0h, 5.0h, 6.0h);
   half3 const r = (a + b);
diff --git a/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.ir.msl
index 4c48969..e502af5 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/vec3-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(4.0f, 5.0f, 6.0f);
   float3 const r = (a + b);
diff --git a/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.ir.msl
index 1fad7c4..440380d 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
   int3 const r = (a + b);
diff --git a/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.ir.msl
index feae644..602b30e 100644
--- a/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/add/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
   uint3 const r = (a + b);
diff --git a/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl.expected.ir.msl
index bc5ad60..0633302 100644
--- a/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-and/scalar-scalar/bool.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   bool const a = true;
   bool const b = false;
   bool const r = (a & b);
diff --git a/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.ir.msl
index e174c3d..930aff4 100644
--- a/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-and/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 1;
   int const b = 2;
   int const r = (a & b);
diff --git a/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.ir.msl
index fbcd33b..029f034 100644
--- a/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-and/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
   uint const r = (a & b);
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.ir.msl
index 6d08b6a..f616a02 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/bool.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   bool3 const a = bool3(true, true, false);
   bool3 const b = bool3(true, false, true);
   bool3 const r = (a & b);
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.ir.msl
index b7e6411..76d8f2b7 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
   int3 const r = (a & b);
diff --git a/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.ir.msl
index d1f70bc..3ae922f 100644
--- a/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-and/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
   uint3 const r = (a & b);
diff --git a/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.ir.msl
index 83b0ddf..e764274 100644
--- a/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-or/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 1;
   int const b = 2;
   int const r = (a | b);
diff --git a/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.ir.msl
index c760471..e2bb896 100644
--- a/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-or/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
   uint const r = (a | b);
diff --git a/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.ir.msl
index 1d5852c..64c2117 100644
--- a/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-or/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
   int3 const r = (a | b);
diff --git a/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.ir.msl
index f018a39..03cd83b 100644
--- a/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-or/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
   uint3 const r = (a | b);
diff --git a/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.ir.msl
index 41024b2..8da49d8 100644
--- a/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-xor/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 1;
   int const b = 2;
   int const r = (a ^ b);
diff --git a/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.ir.msl
index 43bafa1..1cda2c6 100644
--- a/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-xor/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
   uint const r = (a ^ b);
diff --git a/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.ir.msl
index 73dca83..3863523 100644
--- a/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-xor/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
   int3 const r = (a ^ b);
diff --git a/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.ir.msl
index 630f75d..1c4a38e 100644
--- a/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/bit-xor/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
   uint3 const r = (a ^ b);
diff --git a/test/tint/expressions/binary/div/scalar-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/scalar-scalar/f16.wgsl.expected.ir.msl
index 6ae59ac..3ef1d73 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/scalar-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half const a = 1.0h;
   half const b = 2.0h;
   half const r = (a / b);
diff --git a/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl.expected.ir.msl
index 7db795c..1d65596 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/scalar-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float const a = 1.0f;
   float const b = 2.0f;
   float const r = (a / b);
diff --git a/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl.expected.ir.msl
index 4dd45b6..a46d769 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 1;
   int const b = 2;
   int const r = (a / b);
diff --git a/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl.expected.ir.msl
index 5d0e750..38f4f2e 100644
--- a/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
   uint const r = (a / b);
diff --git a/test/tint/expressions/binary/div/scalar-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/scalar-vec3/f16.wgsl.expected.ir.msl
index 98d53e0..dd17852 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/scalar-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half const a = 4.0h;
   half3 const b = half3(1.0h, 2.0h, 3.0h);
   half3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.ir.msl
index 2e759b2..091f009 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/scalar-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float const a = 4.0f;
   float3 const b = float3(1.0f, 2.0f, 3.0f);
   float3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.ir.msl
index dd7f244..4530bf7 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/scalar-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 4;
   int3 const b = int3(1, 2, 3);
   int3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.ir.msl
index 079c592..0c2ddac 100644
--- a/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/scalar-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(1u, 2u, 3u);
   uint3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div/vec3-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/vec3-scalar/f16.wgsl.expected.ir.msl
index 271a179..aa0d561 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/vec3-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 const a = half3(1.0h, 2.0h, 3.0h);
   half const b = 4.0h;
   half3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.ir.msl
index 5629b0a..3e8ff68 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/vec3-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float const b = 4.0f;
   float3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.ir.msl
index 6b8cfcc..3b2dc31 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/vec3-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 4;
   int3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.ir.msl
index 028c90e..5878f55 100644
--- a/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/vec3-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 4u;
   uint3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div/vec3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/vec3-vec3/f16.wgsl.expected.ir.msl
index b3474fd..4a82e7b 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/vec3-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 const a = half3(1.0h, 2.0h, 3.0h);
   half3 const b = half3(4.0h, 5.0h, 6.0h);
   half3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.ir.msl
index 1b951ee..c3bccda 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/vec3-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(4.0f, 5.0f, 6.0f);
   float3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.ir.msl
index 9e9d740..decef76 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
   int3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.ir.msl
index 1962264..72bb62d 100644
--- a/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
   uint3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.msl
index 113550f..37181ef 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half const a = 1.0h;
   half const b = 0.0h;
   half const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.ir.msl
index bfedce4..c680fac 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float const a = 1.0f;
   float const b = 0.0f;
   float const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.ir.msl
index 30e9b54..fe0ba8e 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 1;
   int const b = 0;
   int const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.ir.msl
index 4d4aeae..b68125b 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 1u;
   uint const b = 0u;
   uint const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f16.wgsl.expected.ir.msl
index 0327fdd..6099c52 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half const a = 4.0h;
   half3 const b = half3(0.0h, 2.0h, 0.0h);
   half3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.ir.msl
index 8829aff..028507b 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float const a = 4.0f;
   float3 const b = float3(0.0f, 2.0f, 0.0f);
   float3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.ir.msl
index 0bc44b9..0e80b79 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 4;
   int3 const b = int3(0, 2, 0);
   int3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.ir.msl
index 68aa4cb..af44bfe 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(0u, 2u, 0u);
   uint3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f16.wgsl.expected.ir.msl
index f260bff..a09595f 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 const a = half3(1.0h, 2.0h, 3.0h);
   half const b = 0.0h;
   half3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.ir.msl
index 72b1b2f..e32bf5c 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float const b = 0.0f;
   float3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.ir.msl
index 6c074b5..2fa5c24 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 0;
   int3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.ir.msl
index ccba354..3c45515 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 0u;
   uint3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.msl
index 7cd4371..a637e38 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 const a = half3(1.0h, 2.0h, 3.0h);
   half3 const b = half3(0.0h, 5.0h, 0.0h);
   half3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.ir.msl
index a2420a2..54767f0 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(0.0f, 5.0f, 0.0f);
   float3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.ir.msl
index aa1c14b..e6d18eb 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(0, 5, 0);
   int3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.ir.msl
index d8ec461..d9761ce 100644
--- a/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(0u, 5u, 0u);
   uint3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.msl
index d91129b..f916eec 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half a = 1.0h;
   half b = 0.0h;
   half const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.ir.msl
index e9c5d1d..56ad30b 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float a = 1.0f;
   float b = 0.0f;
   float const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.ir.msl
index 9542ee8..5d5bce1 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int a = 1;
   int b = 0;
   int const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.ir.msl
index 627412c..b8f37ec 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint a = 1u;
   uint b = 0u;
   uint const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f16.wgsl.expected.ir.msl
index 1d564b5..275c5a3 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half a = 4.0h;
   half3 b = half3(0.0h, 2.0h, 0.0h);
   half3 const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.ir.msl
index 188dd32..16a3536 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float a = 4.0f;
   float3 b = float3(0.0f, 2.0f, 0.0f);
   float3 const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.ir.msl
index b87a165..5053dcb 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int a = 4;
   int3 b = int3(0, 2, 0);
   int3 const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.ir.msl
index f0deaad..4dd10b9 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint a = 4u;
   uint3 b = uint3(0u, 2u, 0u);
   uint3 const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f16.wgsl.expected.ir.msl
index 3925217..c627897 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 a = half3(1.0h, 2.0h, 3.0h);
   half b = 0.0h;
   half3 const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.ir.msl
index a07c57f..3f9147e 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 a = float3(1.0f, 2.0f, 3.0f);
   float b = 0.0f;
   float3 const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.ir.msl
index 1747d6f..6fb6226 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 a = int3(1, 2, 3);
   int b = 0;
   int3 const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.ir.msl
index aa150c9..98d02fa 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 a = uint3(1u, 2u, 3u);
   uint b = 0u;
   uint3 const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.msl
index a8b2416..050d67d 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 a = half3(1.0h, 2.0h, 3.0h);
   half3 b = half3(0.0h, 5.0h, 0.0h);
   half3 const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.ir.msl
index b2cdc47..0867a36 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 a = float3(1.0f, 2.0f, 3.0f);
   float3 b = float3(0.0f, 5.0f, 0.0f);
   float3 const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.ir.msl
index 702c991..337e13a 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 a = int3(1, 2, 3);
   int3 b = int3(0, 5, 0);
   int3 const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.ir.msl
index 8579bff..dc7f626 100644
--- a/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 a = uint3(1u, 2u, 3u);
   uint3 b = uint3(0u, 5u, 0u);
   uint3 const r = (a / (b + b));
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.msl
index 2b8ffd2..e447194 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half a = 1.0h;
   half b = 0.0h;
   half const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.ir.msl
index 7b29003..a529c67 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float a = 1.0f;
   float b = 0.0f;
   float const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.ir.msl
index 85e087c..4150d3c 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int a = 1;
   int b = 0;
   int const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.ir.msl
index 41b3c57..68d8d84 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint a = 1u;
   uint b = 0u;
   uint const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f16.wgsl.expected.ir.msl
index 6eec0f1..b31b42f 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half a = 4.0h;
   half3 b = half3(0.0h, 2.0h, 0.0h);
   half3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.ir.msl
index df16e68..11cb173 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float a = 4.0f;
   float3 b = float3(0.0f, 2.0f, 0.0f);
   float3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.ir.msl
index bcb3713..647886e 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int a = 4;
   int3 b = int3(0, 2, 0);
   int3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.ir.msl
index 0875c57..e3f0dc4 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint a = 4u;
   uint3 b = uint3(0u, 2u, 0u);
   uint3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f16.wgsl.expected.ir.msl
index 39b7745..03f8703 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 a = half3(1.0h, 2.0h, 3.0h);
   half b = 0.0h;
   half3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.ir.msl
index 5243939..4595b62 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 a = float3(1.0f, 2.0f, 3.0f);
   float b = 0.0f;
   float3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.ir.msl
index 7e43b89..0759f7d 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 a = int3(1, 2, 3);
   int b = 0;
   int3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.ir.msl
index f7f13d7..b23b7b9 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 a = uint3(1u, 2u, 3u);
   uint b = 0u;
   uint3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.msl
index 44b822e..2b461e6 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 a = half3(1.0h, 2.0h, 3.0h);
   half3 b = half3(0.0h, 5.0h, 0.0h);
   half3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.ir.msl
index c517881..822db84 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 a = float3(1.0f, 2.0f, 3.0f);
   float3 b = float3(0.0f, 5.0f, 0.0f);
   float3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.ir.msl
index c1650d6..0ee1a3b 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 a = int3(1, 2, 3);
   int3 b = int3(0, 5, 0);
   int3 const r = (a / b);
diff --git a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.ir.msl
index 2e3489e..9de2d1c 100644
--- a/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/div_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 a = uint3(1u, 2u, 3u);
   uint3 b = uint3(0u, 5u, 0u);
   uint3 const r = (a / b);
diff --git a/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.ir.msl
index bd76740..144b0eb 100644
--- a/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/left-shift/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 1;
   uint const b = 2u;
   int const r = (a << b);
diff --git a/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.ir.msl
index bb538a1..0e51a63 100644
--- a/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/left-shift/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
   uint const r = (a << b);
diff --git a/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.ir.msl
index 1548bea..73b1379 100644
--- a/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/left-shift/vector-vector/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   uint3 const b = uint3(4u, 5u, 6u);
   int3 const r = (a << b);
diff --git a/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.ir.msl
index 72c291d..5cd797a 100644
--- a/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/left-shift/vector-vector/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
   uint3 const r = (a << b);
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/scalar-scalar/f16.wgsl.expected.ir.msl
index e8db5d5..812cbe6 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/f16.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half const a = 1.0h;
   half const b = 2.0h;
   half const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.ir.msl
index b941f07..c55eb34 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/f32.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float const a = 1.0f;
   float const b = 2.0f;
   float const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.ir.msl
index fe2f77e..e4f9a08 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 1;
   int const b = 2;
   int const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.ir.msl
index afd6883..11edaf7 100644
--- a/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
   uint const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/scalar-vec3/f16.wgsl.expected.ir.msl
index 818dc3e..4e7e3dd 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/f16.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half const a = 4.0h;
   half3 const b = half3(1.0h, 2.0h, 3.0h);
   half3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.ir.msl
index 85cb0d9..c20de57 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/f32.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float const a = 4.0f;
   float3 const b = float3(1.0f, 2.0f, 3.0f);
   float3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.ir.msl
index 034791e..3dc9d7d 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 4;
   int3 const b = int3(1, 2, 3);
   int3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.ir.msl
index 751803a..f81a5c0 100644
--- a/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/scalar-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(1u, 2u, 3u);
   uint3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/vec3-scalar/f16.wgsl.expected.ir.msl
index d628a98..339b67d 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/f16.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 const a = half3(1.0h, 2.0h, 3.0h);
   half const b = 4.0h;
   half3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.ir.msl
index 167b32b..fcd961f 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/f32.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float const b = 4.0f;
   float3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.ir.msl
index 967d83f..5f229b2 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 4;
   int3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.ir.msl
index a7a6f08..4aae403 100644
--- a/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/vec3-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 4u;
   uint3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/vec3-vec3/f16.wgsl.expected.ir.msl
index 0b67192..5eb95c9 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/f16.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 const a = half3(1.0h, 2.0h, 3.0h);
   half3 const b = half3(4.0h, 5.0h, 6.0h);
   half3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.ir.msl
index c468413..7ad70c2 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/f32.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(4.0f, 5.0f, 6.0f);
   float3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.ir.msl
index 3d64ed5..2787c03 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
   int3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.ir.msl
index dceb8d5..6b26bee 100644
--- a/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
   uint3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.msl
index 0d4d86a..3883afa 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f16.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half const a = 1.0h;
   half const b = 0.0h;
   half const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.ir.msl
index e706392..f4e0d01 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/f32.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float const a = 1.0f;
   float const b = 0.0f;
   float const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.ir.msl
index fcdfe88..b1f22a6 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 1;
   int const b = 0;
   int const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.ir.msl
index 4c5be53..e285831 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 1u;
   uint const b = 0u;
   uint const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.ir.msl
index 4c36800..7094ad2 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 4;
   int3 const b = int3(0, 2, 0);
   int3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.ir.msl
index 14ff498..d04a463 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/scalar-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(0u, 2u, 0u);
   uint3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.ir.msl
index 0833a4e..61e0d37 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 0;
   int3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.ir.msl
index 15bd951..3e576ac 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 0u;
   uint3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.msl
index e160a62..500fa80 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f16.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 const a = half3(1.0h, 2.0h, 3.0h);
   half3 const b = half3(0.0h, 5.0h, 0.0h);
   half3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.ir.msl
index 6077a33..b771d78 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/f32.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(0.0f, 5.0f, 0.0f);
   float3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.ir.msl
index d49e2bf..3516f0a 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(0, 5, 0);
   int3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.ir.msl
index 44a9321..4ea3362 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_constant/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(0u, 5u, 0u);
   uint3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.msl
index 330398c..347f215 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f16.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half a = 1.0h;
   half b = 0.0h;
   half const r = (a % (b + b));
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.ir.msl
index 244c537..5b44ae7 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/f32.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float a = 1.0f;
   float b = 0.0f;
   float const r = (a % (b + b));
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.ir.msl
index b9cc462..c03572b 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int a = 1;
   int b = 0;
   int const r = (a % (b + b));
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.ir.msl
index f87c051..7674377 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint a = 1u;
   uint b = 0u;
   uint const r = (a % (b + b));
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.ir.msl
index 68f34ad..f8722fe 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int a = 4;
   int3 b = int3(0, 2, 0);
   int3 const r = (a % (b + b));
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.ir.msl
index 15fe7fc..37e677e 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/scalar-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint a = 4u;
   uint3 b = uint3(0u, 2u, 0u);
   uint3 const r = (a % (b + b));
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.ir.msl
index 34a855b..3614af6 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 a = int3(1, 2, 3);
   int b = 0;
   int3 const r = (a % (b + b));
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.ir.msl
index 46a824e..15e8303 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 a = uint3(1u, 2u, 3u);
   uint b = 0u;
   uint3 const r = (a % (b + b));
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.msl
index 7f90f84..cfcd9fa 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f16.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 a = half3(1.0h, 2.0h, 3.0h);
   half3 b = half3(0.0h, 5.0h, 0.0h);
   half3 const r = (a % (b + b));
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.ir.msl
index eb7552d..3238577 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/f32.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 a = float3(1.0f, 2.0f, 3.0f);
   float3 b = float3(0.0f, 5.0f, 0.0f);
   float3 const r = (a % (b + b));
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.ir.msl
index 6539632..b8d1373 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 a = int3(1, 2, 3);
   int3 b = int3(0, 5, 0);
   int3 const r = (a % (b + b));
diff --git a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.ir.msl
index 93f1e42..735dc67 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_expression/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 a = uint3(1u, 2u, 3u);
   uint3 b = uint3(0u, 5u, 0u);
   uint3 const r = (a % (b + b));
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.msl
index 0cb66cd..b925c09 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f16.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half a = 1.0h;
   half b = 0.0h;
   half const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.ir.msl
index 528dc94..730fb96 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/f32.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float a = 1.0f;
   float b = 0.0f;
   float const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.ir.msl
index 5f1a964..d9dcdcb 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int a = 1;
   int b = 0;
   int const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.ir.msl
index 010ed37..2d86764 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint a = 1u;
   uint b = 0u;
   uint const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.ir.msl
index 630acda..4d180b6 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int a = 4;
   int3 b = int3(0, 2, 0);
   int3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.ir.msl
index 632e5ac..f222dd4 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/scalar-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint a = 4u;
   uint3 b = uint3(0u, 2u, 0u);
   uint3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.ir.msl
index e78edcd..ddf4813 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 a = int3(1, 2, 3);
   int b = 0;
   int3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.ir.msl
index 28bd37d..c732010 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 a = uint3(1u, 2u, 3u);
   uint b = 0u;
   uint3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.msl
index 43ef3f4..a81f54b 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f16.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 a = half3(1.0h, 2.0h, 3.0h);
   half3 b = half3(0.0h, 5.0h, 0.0h);
   half3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.ir.msl
index 619e6f7..0dbb18d 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/f32.wgsl.expected.ir.msl
@@ -3,7 +3,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 a = float3(1.0f, 2.0f, 3.0f);
   float3 b = float3(0.0f, 5.0f, 0.0f);
   float3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.ir.msl
index 0f7b8c3..7deac92 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 a = int3(1, 2, 3);
   int3 b = int3(0, 5, 0);
   int3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.ir.msl
index 1da8cbf..ef26674 100644
--- a/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mod_by_zero/by_identifier/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 a = uint3(1u, 2u, 3u);
   uint3 b = uint3(0u, 5u, 0u);
   uint3 const r = (a % b);
diff --git a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f16.wgsl.expected.ir.msl
index 332b533..64f7ffc 100644
--- a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half2x4 const a = half2x4(half4(1.0h, 2.0h, 3.0h, 4.0h), half4(5.0h, 6.0h, 7.0h, 8.0h));
   half4x2 const b = half4x2(half2(-1.0h, -2.0h), half2(-3.0h, -4.0h), half2(-5.0h, -6.0h), half2(-7.0h, -8.0h));
   half4x4 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.ir.msl
index 15889c8..e007036 100644
--- a/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/mat2x4-mat4x2/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float2x4 const a = float2x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f));
   float4x2 const b = float4x2(float2(-1.0f, -2.0f), float2(-3.0f, -4.0f), float2(-5.0f, -6.0f), float2(-7.0f, -8.0f));
   float4x4 const r = (a * b);
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 c4146f5..c341420 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,6 +1,6 @@
 SKIP: FAILED
 
-<dawn>/src/tint/lang/msl/writer/printer/printer.cc:370 internal compiler error: S = struct @align(8) {
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:383 internal compiler error: S = struct @align(8) {
   tint_symbol:mat3x2<f16> @offset(0)
   vector:vec3<f16> @offset(16)
 }
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 66c00f6..d036b32 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,6 +1,6 @@
 SKIP: FAILED
 
-<dawn>/src/tint/lang/msl/writer/printer/printer.cc:370 internal compiler error: S = struct @align(16) {
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:383 internal compiler error: S = struct @align(16) {
   tint_symbol:mat3x2<f32> @offset(0)
   vector:vec3<f32> @offset(32)
 }
diff --git a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f16.wgsl.expected.ir.msl
index 476bf00..01fbf67 100644
--- a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3x3 const a = half3x3(half3(1.0h, 2.0h, 3.0h), half3(4.0h, 5.0h, 6.0h), half3(7.0h, 8.0h, 9.0h));
   half3x3 const b = half3x3(half3(-1.0h, -2.0h, -3.0h), half3(-4.0h, -5.0h, -6.0h), half3(-7.0h, -8.0h, -9.0h));
   half3x3 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.ir.msl
index 7c3215c..7adcdd2 100644
--- a/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/mat3x3-mat3x3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3x3 const a = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   float3x3 const b = float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f));
   float3x3 const r = (a * b);
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 c7d9b6f..e7299d2 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,6 +1,6 @@
 SKIP: FAILED
 
-<dawn>/src/tint/lang/msl/writer/printer/printer.cc:370 internal compiler error: S = struct @align(8) {
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:383 internal compiler error: S = struct @align(8) {
   tint_symbol:mat3x3<f16> @offset(0)
   vector:vec3<f16> @offset(24)
 }
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 70f13f6..3e4f5ff 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,6 +1,6 @@
 SKIP: FAILED
 
-<dawn>/src/tint/lang/msl/writer/printer/printer.cc:370 internal compiler error: S = struct @align(16) {
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:383 internal compiler error: S = struct @align(16) {
   tint_symbol:mat3x3<f32> @offset(0)
   vector:vec3<f32> @offset(48)
 }
diff --git a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f16.wgsl.expected.ir.msl
index 3353c5b..8481132 100644
--- a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half4x2 const a = half4x2(half2(-1.0h, -2.0h), half2(-3.0h, -4.0h), half2(-5.0h, -6.0h), half2(-7.0h, -8.0h));
   half2x4 const b = half2x4(half4(1.0h, 2.0h, 3.0h, 4.0h), half4(5.0h, 6.0h, 7.0h, 8.0h));
   half2x2 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.ir.msl
index 5f5ecdb..cfe960a 100644
--- a/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/mat4x2-mat2x4/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float4x2 const a = float4x2(float2(-1.0f, -2.0f), float2(-3.0f, -4.0f), float2(-5.0f, -6.0f), float2(-7.0f, -8.0f));
   float2x4 const b = float2x4(float4(1.0f, 2.0f, 3.0f, 4.0f), float4(5.0f, 6.0f, 7.0f, 8.0f));
   float2x2 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/scalar-scalar/f16.wgsl.expected.ir.msl
index fcfc276..38a249d 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half const a = 1.0h;
   half const b = 2.0h;
   half const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.ir.msl
index e57934c..07d3f24 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float const a = 1.0f;
   float const b = 2.0f;
   float const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.ir.msl
index 53a4e0f..f6dfd1a 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 1;
   int const b = 2;
   int const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.ir.msl
index 1c42ddc..bb7b1a3 100644
--- a/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
   uint const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/scalar-vec3/f16.wgsl.expected.ir.msl
index cba126e..783fc28 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half const a = 4.0h;
   half3 const b = half3(1.0h, 2.0h, 3.0h);
   half3 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.ir.msl
index d53d98a..0ca8a78 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float const a = 4.0f;
   float3 const b = float3(1.0f, 2.0f, 3.0f);
   float3 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.ir.msl
index c6c8248..4bf0ea5 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 4;
   int3 const b = int3(1, 2, 3);
   int3 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.ir.msl
index 46363b7..398f555 100644
--- a/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/scalar-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(1u, 2u, 3u);
   uint3 const r = (a * b);
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 766bcad..2ceba0e 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,6 +1,6 @@
 SKIP: FAILED
 
-<dawn>/src/tint/lang/msl/writer/printer/printer.cc:370 internal compiler error: S = struct @align(8) {
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:383 internal compiler error: S = struct @align(8) {
   tint_symbol:mat3x3<f16> @offset(0)
   vector:vec3<f16> @offset(24)
 }
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 b6ef901..4e38b05 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,6 +1,6 @@
 SKIP: FAILED
 
-<dawn>/src/tint/lang/msl/writer/printer/printer.cc:370 internal compiler error: S = struct @align(16) {
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:383 internal compiler error: S = struct @align(16) {
   tint_symbol:mat3x3<f32> @offset(0)
   vector:vec3<f32> @offset(48)
 }
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 0db6199..ddd9a22 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,6 +1,6 @@
 SKIP: FAILED
 
-<dawn>/src/tint/lang/msl/writer/printer/printer.cc:370 internal compiler error: S = struct @align(8) {
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:383 internal compiler error: S = struct @align(8) {
   tint_symbol:mat4x3<f16> @offset(0)
   vector:vec3<f16> @offset(32)
 }
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 908af5a..4c5ce73 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,6 +1,6 @@
 SKIP: FAILED
 
-<dawn>/src/tint/lang/msl/writer/printer/printer.cc:370 internal compiler error: S = struct @align(16) {
+<dawn>/src/tint/lang/msl/writer/printer/printer.cc:383 internal compiler error: S = struct @align(16) {
   tint_symbol:mat4x3<f32> @offset(0)
   vector:vec3<f32> @offset(64)
 }
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-scalar/f16.wgsl.expected.ir.msl
index f541841..8bd6d02 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 const a = half3(1.0h, 2.0h, 3.0h);
   half const b = 4.0h;
   half3 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.ir.msl
index 59217f8..0f6fff2 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float const b = 4.0f;
   float3 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.ir.msl
index fae9deb..6bd1175 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 4;
   int3 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.ir.msl
index 4f4943b..c054c82 100644
--- a/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/vec3-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 4u;
   uint3 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-vec3/f16.wgsl.expected.ir.msl
index fb751ac..34554db 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 const a = half3(1.0h, 2.0h, 3.0h);
   half3 const b = half3(4.0h, 5.0h, 6.0h);
   half3 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.ir.msl
index 828cc2c..cf9d127 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(4.0f, 5.0f, 6.0f);
   float3 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.ir.msl
index 64f3485..3d0cf97 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
   int3 const r = (a * b);
diff --git a/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.ir.msl
index cbaf8df..6d64f19 100644
--- a/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/mul/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
   uint3 const r = (a * b);
diff --git a/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.ir.msl
index 207746f9..e7b1f46 100644
--- a/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/right-shift/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 1;
   uint const b = 2u;
   int const r = (a >> b);
diff --git a/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.ir.msl
index ec69d3e..27bdf8a 100644
--- a/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/right-shift/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
   uint const r = (a >> b);
diff --git a/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.ir.msl
index b9906e2..7e1de7a 100644
--- a/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/right-shift/vector-vector/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   uint3 const b = uint3(4u, 5u, 6u);
   int3 const r = (a >> b);
diff --git a/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.ir.msl
index ea101bf..fa984d3 100644
--- a/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/right-shift/vector-vector/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
   uint3 const r = (a >> b);
diff --git a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f16.wgsl.expected.ir.msl
index 3d65034..9924a98 100644
--- a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3x3 const a = half3x3(half3(1.0h, 2.0h, 3.0h), half3(4.0h, 5.0h, 6.0h), half3(7.0h, 8.0h, 9.0h));
   half3x3 const b = half3x3(half3(-1.0h, -2.0h, -3.0h), half3(-4.0h, -5.0h, -6.0h), half3(-7.0h, -8.0h, -9.0h));
   half3x3 const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.ir.msl
index 4bda5c7..eb7c3f3 100644
--- a/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/mat3x3-mat3x3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3x3 const a = float3x3(float3(1.0f, 2.0f, 3.0f), float3(4.0f, 5.0f, 6.0f), float3(7.0f, 8.0f, 9.0f));
   float3x3 const b = float3x3(float3(-1.0f, -2.0f, -3.0f), float3(-4.0f, -5.0f, -6.0f), float3(-7.0f, -8.0f, -9.0f));
   float3x3 const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/scalar-scalar/f16.wgsl.expected.ir.msl
index 4dc8305..ee19bf4 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half const a = 1.0h;
   half const b = 2.0h;
   half const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.ir.msl
index 0b36da3..a276d46 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float const a = 1.0f;
   float const b = 2.0f;
   float const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.ir.msl
index 7c85451..af343ac 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 1;
   int const b = 2;
   int const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.ir.msl
index 324cde2..4c6703e 100644
--- a/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/scalar-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 1u;
   uint const b = 2u;
   uint const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/scalar-vec3/f16.wgsl.expected.ir.msl
index 67bef24..044d7c5 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half const a = 4.0h;
   half3 const b = half3(1.0h, 2.0h, 3.0h);
   half3 const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.ir.msl
index 04b4777..be1c4e8 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float const a = 4.0f;
   float3 const b = float3(1.0f, 2.0f, 3.0f);
   float3 const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.ir.msl
index 9b36351..ccea36e 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int const a = 4;
   int3 const b = int3(1, 2, 3);
   int3 const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.ir.msl
index a8effe7..2fa9bad 100644
--- a/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/scalar-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint const a = 4u;
   uint3 const b = uint3(1u, 2u, 3u);
   uint3 const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/vec3-scalar/f16.wgsl.expected.ir.msl
index 5a19f55..ac85217 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 const a = half3(1.0h, 2.0h, 3.0h);
   half const b = 4.0h;
   half3 const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.ir.msl
index 9af08e1..361ba8d 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float const b = 4.0f;
   float3 const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.ir.msl
index bf04aa6..0ff7cc3 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int const b = 4;
   int3 const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.ir.msl
index c408c81..6d6197b 100644
--- a/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/vec3-scalar/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint const b = 4u;
   uint3 const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/f16.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/vec3-vec3/f16.wgsl.expected.ir.msl
index b0c9133..0bddb24 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/f16.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/f16.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   half3 const a = half3(1.0h, 2.0h, 3.0h);
   half3 const b = half3(4.0h, 5.0h, 6.0h);
   half3 const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.ir.msl
index 819de27..58aa72c 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/f32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   float3 const a = float3(1.0f, 2.0f, 3.0f);
   float3 const b = float3(4.0f, 5.0f, 6.0f);
   float3 const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.ir.msl
index 3c0b2ae..142cb13 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/i32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   int3 const a = int3(1, 2, 3);
   int3 const b = int3(4, 5, 6);
   int3 const r = (a - b);
diff --git a/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.ir.msl b/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.ir.msl
index 7918705..909080d 100644
--- a/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.ir.msl
+++ b/test/tint/expressions/binary/sub/vec3-vec3/u32.wgsl.expected.ir.msl
@@ -1,7 +1,7 @@
 #include <metal_stdlib>
 using namespace metal;
 
-void f() {
+kernel void f() {
   uint3 const a = uint3(1u, 2u, 3u);
   uint3 const b = uint3(4u, 5u, 6u);
   uint3 const r = (a - b);