diff --git a/test/shader_io/compute_input_builtins.wgsl b/test/shader_io/compute_input_builtins.wgsl
new file mode 100644
index 0000000..b3d6672
--- /dev/null
+++ b/test/shader_io/compute_input_builtins.wgsl
@@ -0,0 +1,14 @@
+[[stage(compute)]]
+fn main(
+  [[builtin(local_invocation_id)]] local_invocation_id : vec3<u32>,
+  [[builtin(local_invocation_index)]] local_invocation_index : u32,
+  [[builtin(global_invocation_id)]] global_invocation_id : vec3<u32>,
+  [[builtin(workgroup_id)]] workgroup_id : vec3<u32>,
+  // TODO(crbug.com/tint/752): [[builtin(num_workgroups)]] num_workgroups : vec3<u32>;
+) {
+  let foo : u32 =
+    local_invocation_id.x +
+    local_invocation_index + 
+    global_invocation_id.x + 
+    workgroup_id.x;
+}
diff --git a/test/shader_io/compute_input_builtins.wgsl.expected.hlsl b/test/shader_io/compute_input_builtins.wgsl.expected.hlsl
new file mode 100644
index 0000000..476144a
--- /dev/null
+++ b/test/shader_io/compute_input_builtins.wgsl.expected.hlsl
@@ -0,0 +1,17 @@
+struct tint_symbol_1 {
+  uint3 local_invocation_id : SV_GroupThreadID;
+  uint local_invocation_index : SV_GroupIndex;
+  uint3 global_invocation_id : SV_DispatchThreadID;
+  uint3 workgroup_id : SV_GroupID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const uint3 local_invocation_id = tint_symbol.local_invocation_id;
+  const uint local_invocation_index = tint_symbol.local_invocation_index;
+  const uint3 global_invocation_id = tint_symbol.global_invocation_id;
+  const uint3 workgroup_id = tint_symbol.workgroup_id;
+  const uint foo = (((local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + workgroup_id.x);
+  return;
+}
+
diff --git a/test/shader_io/compute_input_builtins.wgsl.expected.msl b/test/shader_io/compute_input_builtins.wgsl.expected.msl
new file mode 100644
index 0000000..71d62fb
--- /dev/null
+++ b/test/shader_io/compute_input_builtins.wgsl.expected.msl
@@ -0,0 +1 @@
+SKIP: crbug.com/tint/817 attribute only applies to parameters
diff --git a/test/shader_io/compute_input_builtins.wgsl.expected.spvasm b/test/shader_io/compute_input_builtins.wgsl.expected.spvasm
new file mode 100644
index 0000000..b47c180
--- /dev/null
+++ b/test/shader_io/compute_input_builtins.wgsl.expected.spvasm
@@ -0,0 +1,43 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 24
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_2 %tint_symbol_3
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn LocalInvocationId
+               OpDecorate %tint_symbol_1 BuiltIn LocalInvocationIndex
+               OpDecorate %tint_symbol_2 BuiltIn GlobalInvocationId
+               OpDecorate %tint_symbol_3 BuiltIn WorkgroupId
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol_1 = OpVariable %_ptr_Input_uint Input
+%tint_symbol_2 = OpVariable %_ptr_Input_v3uint Input
+%tint_symbol_3 = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+     %uint_0 = OpConstant %uint 0
+       %main = OpFunction %void None %9
+         %12 = OpLabel
+         %14 = OpAccessChain %_ptr_Input_uint %tint_symbol %uint_0
+         %15 = OpLoad %uint %14
+         %16 = OpLoad %uint %tint_symbol_1
+         %17 = OpIAdd %uint %15 %16
+         %18 = OpAccessChain %_ptr_Input_uint %tint_symbol_2 %uint_0
+         %19 = OpLoad %uint %18
+         %20 = OpIAdd %uint %17 %19
+         %21 = OpAccessChain %_ptr_Input_uint %tint_symbol_3 %uint_0
+         %22 = OpLoad %uint %21
+         %23 = OpIAdd %uint %20 %22
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/compute_input_builtins.wgsl.expected.wgsl b/test/shader_io/compute_input_builtins.wgsl.expected.wgsl
new file mode 100644
index 0000000..95ee85f
--- /dev/null
+++ b/test/shader_io/compute_input_builtins.wgsl.expected.wgsl
@@ -0,0 +1,4 @@
+[[stage(compute)]]
+fn main([[builtin(local_invocation_id)]] local_invocation_id : vec3<u32>, [[builtin(local_invocation_index)]] local_invocation_index : u32, [[builtin(global_invocation_id)]] global_invocation_id : vec3<u32>, [[builtin(workgroup_id)]] workgroup_id : vec3<u32>) {
+  let foo : u32 = (((local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + workgroup_id.x);
+}
diff --git a/test/shader_io/compute_input_builtins_struct.wgsl b/test/shader_io/compute_input_builtins_struct.wgsl
new file mode 100644
index 0000000..17f15b2
--- /dev/null
+++ b/test/shader_io/compute_input_builtins_struct.wgsl
@@ -0,0 +1,16 @@
+struct ComputeInputs {
+  [[builtin(local_invocation_id)]] local_invocation_id : vec3<u32>;
+  [[builtin(local_invocation_index)]] local_invocation_index : u32;
+  [[builtin(global_invocation_id)]] global_invocation_id : vec3<u32>;
+  [[builtin(workgroup_id)]] workgroup_id : vec3<u32>;
+  // TODO(crbug.com/tint/752): [[builtin(num_workgroups)]] num_workgroups : vec3<u32>;
+};
+
+[[stage(compute)]]
+fn main(inputs : ComputeInputs) {
+  let foo : u32 =
+    inputs.local_invocation_id.x +
+    inputs.local_invocation_index + 
+    inputs.global_invocation_id.x + 
+    inputs.workgroup_id.x;
+}
diff --git a/test/shader_io/compute_input_builtins_struct.wgsl.expected.hlsl b/test/shader_io/compute_input_builtins_struct.wgsl.expected.hlsl
new file mode 100644
index 0000000..a33806b
--- /dev/null
+++ b/test/shader_io/compute_input_builtins_struct.wgsl.expected.hlsl
@@ -0,0 +1,20 @@
+struct ComputeInputs {
+  uint3 local_invocation_id;
+  uint local_invocation_index;
+  uint3 global_invocation_id;
+  uint3 workgroup_id;
+};
+struct tint_symbol_1 {
+  uint3 local_invocation_id : SV_GroupThreadID;
+  uint local_invocation_index : SV_GroupIndex;
+  uint3 global_invocation_id : SV_DispatchThreadID;
+  uint3 workgroup_id : SV_GroupID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const ComputeInputs inputs = {tint_symbol.local_invocation_id, tint_symbol.local_invocation_index, tint_symbol.global_invocation_id, tint_symbol.workgroup_id};
+  const uint foo = (((inputs.local_invocation_id.x + inputs.local_invocation_index) + inputs.global_invocation_id.x) + inputs.workgroup_id.x);
+  return;
+}
+
diff --git a/test/shader_io/compute_input_builtins_struct.wgsl.expected.msl b/test/shader_io/compute_input_builtins_struct.wgsl.expected.msl
new file mode 100644
index 0000000..71d62fb
--- /dev/null
+++ b/test/shader_io/compute_input_builtins_struct.wgsl.expected.msl
@@ -0,0 +1 @@
+SKIP: crbug.com/tint/817 attribute only applies to parameters
diff --git a/test/shader_io/compute_input_builtins_struct.wgsl.expected.spvasm b/test/shader_io/compute_input_builtins_struct.wgsl.expected.spvasm
new file mode 100644
index 0000000..f54703d
--- /dev/null
+++ b/test/shader_io/compute_input_builtins_struct.wgsl.expected.spvasm
@@ -0,0 +1,57 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 29
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_2 %tint_symbol_3
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main "main"
+               OpName %ComputeInputs "ComputeInputs"
+               OpMemberName %ComputeInputs 0 "local_invocation_id"
+               OpMemberName %ComputeInputs 1 "local_invocation_index"
+               OpMemberName %ComputeInputs 2 "global_invocation_id"
+               OpMemberName %ComputeInputs 3 "workgroup_id"
+               OpDecorate %tint_symbol BuiltIn LocalInvocationId
+               OpDecorate %tint_symbol_1 BuiltIn LocalInvocationIndex
+               OpDecorate %tint_symbol_2 BuiltIn GlobalInvocationId
+               OpDecorate %tint_symbol_3 BuiltIn WorkgroupId
+               OpMemberDecorate %ComputeInputs 0 Offset 0
+               OpMemberDecorate %ComputeInputs 1 Offset 12
+               OpMemberDecorate %ComputeInputs 2 Offset 16
+               OpMemberDecorate %ComputeInputs 3 Offset 32
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol_1 = OpVariable %_ptr_Input_uint Input
+%tint_symbol_2 = OpVariable %_ptr_Input_v3uint Input
+%tint_symbol_3 = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+%ComputeInputs = OpTypeStruct %v3uint %uint %v3uint %v3uint
+       %main = OpFunction %void None %9
+         %12 = OpLabel
+         %14 = OpLoad %v3uint %tint_symbol
+         %15 = OpLoad %uint %tint_symbol_1
+         %16 = OpLoad %v3uint %tint_symbol_2
+         %17 = OpLoad %v3uint %tint_symbol_3
+         %18 = OpCompositeConstruct %ComputeInputs %14 %15 %16 %17
+         %19 = OpCompositeExtract %v3uint %18 0
+         %20 = OpCompositeExtract %uint %19 0
+         %21 = OpCompositeExtract %uint %18 1
+         %22 = OpIAdd %uint %20 %21
+         %23 = OpCompositeExtract %v3uint %18 2
+         %24 = OpCompositeExtract %uint %23 0
+         %25 = OpIAdd %uint %22 %24
+         %26 = OpCompositeExtract %v3uint %18 3
+         %27 = OpCompositeExtract %uint %26 0
+         %28 = OpIAdd %uint %25 %27
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl b/test/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl
new file mode 100644
index 0000000..c7f51b9
--- /dev/null
+++ b/test/shader_io/compute_input_builtins_struct.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+struct ComputeInputs {
+  [[builtin(local_invocation_id)]]
+  local_invocation_id : vec3<u32>;
+  [[builtin(local_invocation_index)]]
+  local_invocation_index : u32;
+  [[builtin(global_invocation_id)]]
+  global_invocation_id : vec3<u32>;
+  [[builtin(workgroup_id)]]
+  workgroup_id : vec3<u32>;
+};
+
+[[stage(compute)]]
+fn main(inputs : ComputeInputs) {
+  let foo : u32 = (((inputs.local_invocation_id.x + inputs.local_invocation_index) + inputs.global_invocation_id.x) + inputs.workgroup_id.x);
+}
diff --git a/test/shader_io/compute_input_mixed.wgsl b/test/shader_io/compute_input_mixed.wgsl
new file mode 100644
index 0000000..e9ccaaa
--- /dev/null
+++ b/test/shader_io/compute_input_mixed.wgsl
@@ -0,0 +1,20 @@
+struct ComputeInputs0 {
+  [[builtin(local_invocation_id)]] local_invocation_id : vec3<u32>;
+};
+struct ComputeInputs1 {
+  [[builtin(workgroup_id)]] workgroup_id : vec3<u32>;
+};
+
+[[stage(compute)]]
+fn main(
+  inputs0 : ComputeInputs0,
+  [[builtin(local_invocation_index)]] local_invocation_index : u32,
+  [[builtin(global_invocation_id)]] global_invocation_id : vec3<u32>,
+  inputs1 : ComputeInputs1,
+) {
+  let foo : u32 =
+    inputs0.local_invocation_id.x +
+    local_invocation_index + 
+    global_invocation_id.x + 
+    inputs1.workgroup_id.x;
+}
diff --git a/test/shader_io/compute_input_mixed.wgsl.expected.hlsl b/test/shader_io/compute_input_mixed.wgsl.expected.hlsl
new file mode 100644
index 0000000..f9a8369
--- /dev/null
+++ b/test/shader_io/compute_input_mixed.wgsl.expected.hlsl
@@ -0,0 +1,23 @@
+struct ComputeInputs0 {
+  uint3 local_invocation_id;
+};
+struct ComputeInputs1 {
+  uint3 workgroup_id;
+};
+struct tint_symbol_1 {
+  uint3 local_invocation_id : SV_GroupThreadID;
+  uint local_invocation_index : SV_GroupIndex;
+  uint3 global_invocation_id : SV_DispatchThreadID;
+  uint3 workgroup_id : SV_GroupID;
+};
+
+[numthreads(1, 1, 1)]
+void main(tint_symbol_1 tint_symbol) {
+  const ComputeInputs0 inputs0 = {tint_symbol.local_invocation_id};
+  const uint local_invocation_index = tint_symbol.local_invocation_index;
+  const uint3 global_invocation_id = tint_symbol.global_invocation_id;
+  const ComputeInputs1 inputs1 = {tint_symbol.workgroup_id};
+  const uint foo = (((inputs0.local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + inputs1.workgroup_id.x);
+  return;
+}
+
diff --git a/test/shader_io/compute_input_mixed.wgsl.expected.msl b/test/shader_io/compute_input_mixed.wgsl.expected.msl
new file mode 100644
index 0000000..71d62fb
--- /dev/null
+++ b/test/shader_io/compute_input_mixed.wgsl.expected.msl
@@ -0,0 +1 @@
+SKIP: crbug.com/tint/817 attribute only applies to parameters
diff --git a/test/shader_io/compute_input_mixed.wgsl.expected.spvasm b/test/shader_io/compute_input_mixed.wgsl.expected.spvasm
new file mode 100644
index 0000000..145635e
--- /dev/null
+++ b/test/shader_io/compute_input_mixed.wgsl.expected.spvasm
@@ -0,0 +1,55 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 30
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %main "main" %tint_symbol %tint_symbol_4 %tint_symbol_2 %tint_symbol_3
+               OpExecutionMode %main LocalSize 1 1 1
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %main "main"
+               OpName %ComputeInputs0 "ComputeInputs0"
+               OpMemberName %ComputeInputs0 0 "local_invocation_id"
+               OpName %ComputeInputs1 "ComputeInputs1"
+               OpMemberName %ComputeInputs1 0 "workgroup_id"
+               OpDecorate %tint_symbol BuiltIn LocalInvocationId
+               OpDecorate %tint_symbol_2 BuiltIn LocalInvocationIndex
+               OpDecorate %tint_symbol_3 BuiltIn GlobalInvocationId
+               OpDecorate %tint_symbol_4 BuiltIn WorkgroupId
+               OpMemberDecorate %ComputeInputs0 0 Offset 0
+               OpMemberDecorate %ComputeInputs1 0 Offset 0
+       %uint = OpTypeInt 32 0
+     %v3uint = OpTypeVector %uint 3
+%_ptr_Input_v3uint = OpTypePointer Input %v3uint
+%tint_symbol = OpVariable %_ptr_Input_v3uint Input
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol_2 = OpVariable %_ptr_Input_uint Input
+%tint_symbol_3 = OpVariable %_ptr_Input_v3uint Input
+%tint_symbol_4 = OpVariable %_ptr_Input_v3uint Input
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void
+%ComputeInputs0 = OpTypeStruct %v3uint
+%ComputeInputs1 = OpTypeStruct %v3uint
+     %uint_0 = OpConstant %uint 0
+       %main = OpFunction %void None %9
+         %12 = OpLabel
+         %14 = OpLoad %v3uint %tint_symbol
+         %15 = OpCompositeConstruct %ComputeInputs0 %14
+         %17 = OpLoad %v3uint %tint_symbol_4
+         %18 = OpCompositeConstruct %ComputeInputs1 %17
+         %19 = OpCompositeExtract %v3uint %15 0
+         %20 = OpCompositeExtract %uint %19 0
+         %21 = OpLoad %uint %tint_symbol_2
+         %22 = OpIAdd %uint %20 %21
+         %24 = OpAccessChain %_ptr_Input_uint %tint_symbol_3 %uint_0
+         %25 = OpLoad %uint %24
+         %26 = OpIAdd %uint %22 %25
+         %27 = OpCompositeExtract %v3uint %18 0
+         %28 = OpCompositeExtract %uint %27 0
+         %29 = OpIAdd %uint %26 %28
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/compute_input_mixed.wgsl.expected.wgsl b/test/shader_io/compute_input_mixed.wgsl.expected.wgsl
new file mode 100644
index 0000000..2233b53
--- /dev/null
+++ b/test/shader_io/compute_input_mixed.wgsl.expected.wgsl
@@ -0,0 +1,14 @@
+struct ComputeInputs0 {
+  [[builtin(local_invocation_id)]]
+  local_invocation_id : vec3<u32>;
+};
+
+struct ComputeInputs1 {
+  [[builtin(workgroup_id)]]
+  workgroup_id : vec3<u32>;
+};
+
+[[stage(compute)]]
+fn main(inputs0 : ComputeInputs0, [[builtin(local_invocation_index)]] local_invocation_index : u32, [[builtin(global_invocation_id)]] global_invocation_id : vec3<u32>, inputs1 : ComputeInputs1) {
+  let foo : u32 = (((inputs0.local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + inputs1.workgroup_id.x);
+}
diff --git a/test/shader_io/fragment_input_builtins.wgsl b/test/shader_io/fragment_input_builtins.wgsl
new file mode 100644
index 0000000..0395bfd
--- /dev/null
+++ b/test/shader_io/fragment_input_builtins.wgsl
@@ -0,0 +1,12 @@
+[[stage(fragment)]]
+fn main(
+  [[builtin(position)]] position : vec4<f32>,
+  [[builtin(front_facing)]] front_facing : bool,
+  [[builtin(sample_index)]] sample_index : u32,
+  [[builtin(sample_mask)]] sample_mask : u32,
+) {
+  if (front_facing) {
+    let foo : vec4<f32> = position;
+    let bar : u32 = sample_index + sample_mask;
+  }
+}
diff --git a/test/shader_io/fragment_input_builtins.wgsl.expected.hlsl b/test/shader_io/fragment_input_builtins.wgsl.expected.hlsl
new file mode 100644
index 0000000..461ac3f
--- /dev/null
+++ b/test/shader_io/fragment_input_builtins.wgsl.expected.hlsl
@@ -0,0 +1,19 @@
+struct tint_symbol_1 {
+  float4 position : SV_Position;
+  bool front_facing : SV_IsFrontFace;
+  uint sample_index : SV_SampleIndex;
+  uint sample_mask : SV_Coverage;
+};
+
+void main(tint_symbol_1 tint_symbol) {
+  const float4 position = tint_symbol.position;
+  const bool front_facing = tint_symbol.front_facing;
+  const uint sample_index = tint_symbol.sample_index;
+  const uint sample_mask = tint_symbol.sample_mask;
+  if (front_facing) {
+    const float4 foo = position;
+    const uint bar = (sample_index + sample_mask);
+  }
+  return;
+}
+
diff --git a/test/shader_io/fragment_input_builtins.wgsl.expected.msl b/test/shader_io/fragment_input_builtins.wgsl.expected.msl
new file mode 100644
index 0000000..3e46c6f
--- /dev/null
+++ b/test/shader_io/fragment_input_builtins.wgsl.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_symbol_2 {
+  float4 position [[position]];
+  bool front_facing [[front_facing]];
+  uint sample_index [[sample_id]];
+  uint sample_mask [[sample_mask]];
+};
+
+fragment void tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  float4 const position = tint_symbol_1.position;
+  bool const front_facing = tint_symbol_1.front_facing;
+  uint const sample_index = tint_symbol_1.sample_index;
+  uint const sample_mask = tint_symbol_1.sample_mask;
+  if (front_facing) {
+    float4 const foo = position;
+    uint const bar = (sample_index + sample_mask);
+  }
+  return;
+}
+
diff --git a/test/shader_io/fragment_input_builtins.wgsl.expected.spvasm b/test/shader_io/fragment_input_builtins.wgsl.expected.spvasm
new file mode 100644
index 0000000..b6e26bd
--- /dev/null
+++ b/test/shader_io/fragment_input_builtins.wgsl.expected.spvasm
@@ -0,0 +1,53 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 29
+; Schema: 0
+               OpCapability Shader
+               OpCapability SampleRateShading
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol %tint_symbol_2 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main "main"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 BuiltIn FrontFacing
+               OpDecorate %tint_symbol_2 BuiltIn SampleId
+               OpDecorate %_arr_uint_uint_1 ArrayStride 4
+               OpDecorate %tint_symbol_3 BuiltIn SampleMask
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+       %bool = OpTypeBool
+%_ptr_Input_bool = OpTypePointer Input %bool
+%tint_symbol_1 = OpVariable %_ptr_Input_bool Input
+       %uint = OpTypeInt 32 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol_2 = OpVariable %_ptr_Input_uint Input
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+%_ptr_Input__arr_uint_uint_1 = OpTypePointer Input %_arr_uint_uint_1
+%tint_symbol_3 = OpVariable %_ptr_Input__arr_uint_uint_1 Input
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %main = OpFunction %void None %15
+         %18 = OpLabel
+         %19 = OpLoad %bool %tint_symbol_1
+               OpSelectionMerge %20 None
+               OpBranchConditional %19 %21 %20
+         %21 = OpLabel
+         %22 = OpLoad %v4float %tint_symbol
+         %23 = OpLoad %uint %tint_symbol_2
+         %26 = OpAccessChain %_ptr_Input_uint %tint_symbol_3 %int_0
+         %27 = OpLoad %uint %26
+         %28 = OpIAdd %uint %23 %27
+               OpBranch %20
+         %20 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/fragment_input_builtins.wgsl.expected.wgsl b/test/shader_io/fragment_input_builtins.wgsl.expected.wgsl
new file mode 100644
index 0000000..cfad6db
--- /dev/null
+++ b/test/shader_io/fragment_input_builtins.wgsl.expected.wgsl
@@ -0,0 +1,7 @@
+[[stage(fragment)]]
+fn main([[builtin(position)]] position : vec4<f32>, [[builtin(front_facing)]] front_facing : bool, [[builtin(sample_index)]] sample_index : u32, [[builtin(sample_mask)]] sample_mask : u32) {
+  if (front_facing) {
+    let foo : vec4<f32> = position;
+    let bar : u32 = (sample_index + sample_mask);
+  }
+}
diff --git a/test/shader_io/fragment_input_builtins_struct.wgsl b/test/shader_io/fragment_input_builtins_struct.wgsl
new file mode 100644
index 0000000..af9e0d3
--- /dev/null
+++ b/test/shader_io/fragment_input_builtins_struct.wgsl
@@ -0,0 +1,14 @@
+struct FragmentInputs {
+  [[builtin(position)]] position : vec4<f32>;
+  [[builtin(front_facing)]] front_facing : bool;
+  [[builtin(sample_index)]] sample_index : u32;
+  [[builtin(sample_mask)]] sample_mask : u32;
+};
+
+[[stage(fragment)]]
+fn main(inputs : FragmentInputs) {
+  if (inputs.front_facing) {
+    let foo : vec4<f32> = inputs.position;
+    let bar : u32 = inputs.sample_index + inputs.sample_mask;
+  }
+}
diff --git a/test/shader_io/fragment_input_builtins_struct.wgsl.expected.hlsl b/test/shader_io/fragment_input_builtins_struct.wgsl.expected.hlsl
new file mode 100644
index 0000000..21e09a5
--- /dev/null
+++ b/test/shader_io/fragment_input_builtins_struct.wgsl.expected.hlsl
@@ -0,0 +1,22 @@
+struct FragmentInputs {
+  float4 position;
+  bool front_facing;
+  uint sample_index;
+  uint sample_mask;
+};
+struct tint_symbol_1 {
+  float4 position : SV_Position;
+  bool front_facing : SV_IsFrontFace;
+  uint sample_index : SV_SampleIndex;
+  uint sample_mask : SV_Coverage;
+};
+
+void main(tint_symbol_1 tint_symbol) {
+  const FragmentInputs inputs = {tint_symbol.position, tint_symbol.front_facing, tint_symbol.sample_index, tint_symbol.sample_mask};
+  if (inputs.front_facing) {
+    const float4 foo = inputs.position;
+    const uint bar = (inputs.sample_index + inputs.sample_mask);
+  }
+  return;
+}
+
diff --git a/test/shader_io/fragment_input_builtins_struct.wgsl.expected.msl b/test/shader_io/fragment_input_builtins_struct.wgsl.expected.msl
new file mode 100644
index 0000000..5b5ed67
--- /dev/null
+++ b/test/shader_io/fragment_input_builtins_struct.wgsl.expected.msl
@@ -0,0 +1,25 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct FragmentInputs {
+  float4 position;
+  bool front_facing;
+  uint sample_index;
+  uint sample_mask;
+};
+struct tint_symbol_2 {
+  float4 position [[position]];
+  bool front_facing [[front_facing]];
+  uint sample_index [[sample_id]];
+  uint sample_mask [[sample_mask]];
+};
+
+fragment void tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  FragmentInputs const inputs = {tint_symbol_1.position, tint_symbol_1.front_facing, tint_symbol_1.sample_index, tint_symbol_1.sample_mask};
+  if (inputs.front_facing) {
+    float4 const foo = inputs.position;
+    uint const bar = (inputs.sample_index + inputs.sample_mask);
+  }
+  return;
+}
+
diff --git a/test/shader_io/fragment_input_builtins_struct.wgsl.expected.spvasm b/test/shader_io/fragment_input_builtins_struct.wgsl.expected.spvasm
new file mode 100644
index 0000000..16ace31
--- /dev/null
+++ b/test/shader_io/fragment_input_builtins_struct.wgsl.expected.spvasm
@@ -0,0 +1,68 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 35
+; Schema: 0
+               OpCapability Shader
+               OpCapability SampleRateShading
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_2 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main "main"
+               OpName %FragmentInputs "FragmentInputs"
+               OpMemberName %FragmentInputs 0 "position"
+               OpMemberName %FragmentInputs 1 "front_facing"
+               OpMemberName %FragmentInputs 2 "sample_index"
+               OpMemberName %FragmentInputs 3 "sample_mask"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 BuiltIn FrontFacing
+               OpDecorate %tint_symbol_2 BuiltIn SampleId
+               OpDecorate %_arr_uint_uint_1 ArrayStride 4
+               OpDecorate %tint_symbol_3 BuiltIn SampleMask
+               OpMemberDecorate %FragmentInputs 0 Offset 0
+               OpMemberDecorate %FragmentInputs 1 Offset 16
+               OpMemberDecorate %FragmentInputs 2 Offset 20
+               OpMemberDecorate %FragmentInputs 3 Offset 24
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+       %bool = OpTypeBool
+%_ptr_Input_bool = OpTypePointer Input %bool
+%tint_symbol_1 = OpVariable %_ptr_Input_bool Input
+       %uint = OpTypeInt 32 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol_2 = OpVariable %_ptr_Input_uint Input
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+%_ptr_Input__arr_uint_uint_1 = OpTypePointer Input %_arr_uint_uint_1
+%tint_symbol_3 = OpVariable %_ptr_Input__arr_uint_uint_1 Input
+       %void = OpTypeVoid
+         %15 = OpTypeFunction %void
+%FragmentInputs = OpTypeStruct %v4float %bool %uint %uint
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+       %main = OpFunction %void None %15
+         %18 = OpLabel
+         %20 = OpLoad %v4float %tint_symbol
+         %21 = OpLoad %bool %tint_symbol_1
+         %22 = OpLoad %uint %tint_symbol_2
+         %25 = OpAccessChain %_ptr_Input_uint %tint_symbol_3 %int_0
+         %26 = OpLoad %uint %25
+         %27 = OpCompositeConstruct %FragmentInputs %20 %21 %22 %26
+         %28 = OpCompositeExtract %bool %27 1
+               OpSelectionMerge %29 None
+               OpBranchConditional %28 %30 %29
+         %30 = OpLabel
+         %31 = OpCompositeExtract %v4float %27 0
+         %32 = OpCompositeExtract %uint %27 2
+         %33 = OpCompositeExtract %uint %27 3
+         %34 = OpIAdd %uint %32 %33
+               OpBranch %29
+         %29 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl b/test/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl
new file mode 100644
index 0000000..0cf1aeb
--- /dev/null
+++ b/test/shader_io/fragment_input_builtins_struct.wgsl.expected.wgsl
@@ -0,0 +1,18 @@
+struct FragmentInputs {
+  [[builtin(position)]]
+  position : vec4<f32>;
+  [[builtin(front_facing)]]
+  front_facing : bool;
+  [[builtin(sample_index)]]
+  sample_index : u32;
+  [[builtin(sample_mask)]]
+  sample_mask : u32;
+};
+
+[[stage(fragment)]]
+fn main(inputs : FragmentInputs) {
+  if (inputs.front_facing) {
+    let foo : vec4<f32> = inputs.position;
+    let bar : u32 = (inputs.sample_index + inputs.sample_mask);
+  }
+}
diff --git a/test/shader_io/fragment_input_locations.wgsl b/test/shader_io/fragment_input_locations.wgsl
new file mode 100644
index 0000000..09aa769
--- /dev/null
+++ b/test/shader_io/fragment_input_locations.wgsl
@@ -0,0 +1,12 @@
+[[stage(fragment)]]
+fn main(
+  [[location(0)]] loc0 : i32,
+  [[location(1)]] loc1 : u32,
+  [[location(2)]] loc2 : f32,
+  [[location(3)]] loc3 : vec4<f32>,
+) {
+  let i : i32 = loc0;
+  let u : u32 = loc1;
+  let f : f32 = loc2;
+  let v : vec4<f32> = loc3;
+}
diff --git a/test/shader_io/fragment_input_locations.wgsl.expected.hlsl b/test/shader_io/fragment_input_locations.wgsl.expected.hlsl
new file mode 100644
index 0000000..6f08c68
--- /dev/null
+++ b/test/shader_io/fragment_input_locations.wgsl.expected.hlsl
@@ -0,0 +1,19 @@
+struct tint_symbol_1 {
+  int loc0 : TEXCOORD0;
+  uint loc1 : TEXCOORD1;
+  float loc2 : TEXCOORD2;
+  float4 loc3 : TEXCOORD3;
+};
+
+void main(tint_symbol_1 tint_symbol) {
+  const int loc0 = tint_symbol.loc0;
+  const uint loc1 = tint_symbol.loc1;
+  const float loc2 = tint_symbol.loc2;
+  const float4 loc3 = tint_symbol.loc3;
+  const int i = loc0;
+  const uint u = loc1;
+  const float f = loc2;
+  const float4 v = loc3;
+  return;
+}
+
diff --git a/test/shader_io/fragment_input_locations.wgsl.expected.msl b/test/shader_io/fragment_input_locations.wgsl.expected.msl
new file mode 100644
index 0000000..c8014ad
--- /dev/null
+++ b/test/shader_io/fragment_input_locations.wgsl.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_symbol_2 {
+  int loc0 [[user(locn0)]];
+  uint loc1 [[user(locn1)]];
+  float loc2 [[user(locn2)]];
+  float4 loc3 [[user(locn3)]];
+};
+
+fragment void tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  int const loc0 = tint_symbol_1.loc0;
+  uint const loc1 = tint_symbol_1.loc1;
+  float const loc2 = tint_symbol_1.loc2;
+  float4 const loc3 = tint_symbol_1.loc3;
+  int const i = loc0;
+  uint const u = loc1;
+  float const f = loc2;
+  float4 const v = loc3;
+  return;
+}
+
diff --git a/test/shader_io/fragment_input_locations.wgsl.expected.spvasm b/test/shader_io/fragment_input_locations.wgsl.expected.spvasm
new file mode 100644
index 0000000..98e3d29
--- /dev/null
+++ b/test/shader_io/fragment_input_locations.wgsl.expected.spvasm
@@ -0,0 +1,40 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 21
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_2 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main "main"
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_1 Location 1
+               OpDecorate %tint_symbol_2 Location 2
+               OpDecorate %tint_symbol_3 Location 3
+        %int = OpTypeInt 32 1
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol = OpVariable %_ptr_Input_int Input
+       %uint = OpTypeInt 32 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol_1 = OpVariable %_ptr_Input_uint Input
+      %float = OpTypeFloat 32
+%_ptr_Input_float = OpTypePointer Input %float
+%tint_symbol_2 = OpVariable %_ptr_Input_float Input
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol_3 = OpVariable %_ptr_Input_v4float Input
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+       %main = OpFunction %void None %13
+         %16 = OpLabel
+         %17 = OpLoad %int %tint_symbol
+         %18 = OpLoad %uint %tint_symbol_1
+         %19 = OpLoad %float %tint_symbol_2
+         %20 = OpLoad %v4float %tint_symbol_3
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/fragment_input_locations.wgsl.expected.wgsl b/test/shader_io/fragment_input_locations.wgsl.expected.wgsl
new file mode 100644
index 0000000..2ab1394
--- /dev/null
+++ b/test/shader_io/fragment_input_locations.wgsl.expected.wgsl
@@ -0,0 +1,7 @@
+[[stage(fragment)]]
+fn main([[location(0)]] loc0 : i32, [[location(1)]] loc1 : u32, [[location(2)]] loc2 : f32, [[location(3)]] loc3 : vec4<f32>) {
+  let i : i32 = loc0;
+  let u : u32 = loc1;
+  let f : f32 = loc2;
+  let v : vec4<f32> = loc3;
+}
diff --git a/test/shader_io/fragment_input_locations_struct.wgsl b/test/shader_io/fragment_input_locations_struct.wgsl
new file mode 100644
index 0000000..710ded1
--- /dev/null
+++ b/test/shader_io/fragment_input_locations_struct.wgsl
@@ -0,0 +1,14 @@
+struct FragmentInputs {
+  [[location(0)]] loc0 : i32;
+  [[location(1)]] loc1 : u32;
+  [[location(2)]] loc2 : f32;
+  [[location(3)]] loc3 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main(inputs : FragmentInputs) {
+  let i : i32 = inputs.loc0;
+  let u : u32 = inputs.loc1;
+  let f : f32 = inputs.loc2;
+  let v : vec4<f32> = inputs.loc3;
+}
diff --git a/test/shader_io/fragment_input_locations_struct.wgsl.expected.hlsl b/test/shader_io/fragment_input_locations_struct.wgsl.expected.hlsl
new file mode 100644
index 0000000..8174496
--- /dev/null
+++ b/test/shader_io/fragment_input_locations_struct.wgsl.expected.hlsl
@@ -0,0 +1,22 @@
+struct FragmentInputs {
+  int loc0;
+  uint loc1;
+  float loc2;
+  float4 loc3;
+};
+struct tint_symbol_1 {
+  int loc0 : TEXCOORD0;
+  uint loc1 : TEXCOORD1;
+  float loc2 : TEXCOORD2;
+  float4 loc3 : TEXCOORD3;
+};
+
+void main(tint_symbol_1 tint_symbol) {
+  const FragmentInputs inputs = {tint_symbol.loc0, tint_symbol.loc1, tint_symbol.loc2, tint_symbol.loc3};
+  const int i = inputs.loc0;
+  const uint u = inputs.loc1;
+  const float f = inputs.loc2;
+  const float4 v = inputs.loc3;
+  return;
+}
+
diff --git a/test/shader_io/fragment_input_locations_struct.wgsl.expected.msl b/test/shader_io/fragment_input_locations_struct.wgsl.expected.msl
new file mode 100644
index 0000000..3250f3e
--- /dev/null
+++ b/test/shader_io/fragment_input_locations_struct.wgsl.expected.msl
@@ -0,0 +1,25 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct FragmentInputs {
+  int loc0;
+  uint loc1;
+  float loc2;
+  float4 loc3;
+};
+struct tint_symbol_2 {
+  int loc0 [[user(locn0)]];
+  uint loc1 [[user(locn1)]];
+  float loc2 [[user(locn2)]];
+  float4 loc3 [[user(locn3)]];
+};
+
+fragment void tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  FragmentInputs const inputs = {tint_symbol_1.loc0, tint_symbol_1.loc1, tint_symbol_1.loc2, tint_symbol_1.loc3};
+  int const i = inputs.loc0;
+  uint const u = inputs.loc1;
+  float const f = inputs.loc2;
+  float4 const v = inputs.loc3;
+  return;
+}
+
diff --git a/test/shader_io/fragment_input_locations_struct.wgsl.expected.spvasm b/test/shader_io/fragment_input_locations_struct.wgsl.expected.spvasm
new file mode 100644
index 0000000..8088af5
--- /dev/null
+++ b/test/shader_io/fragment_input_locations_struct.wgsl.expected.spvasm
@@ -0,0 +1,55 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 27
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_2 %tint_symbol_3
+               OpExecutionMode %main OriginUpperLeft
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main "main"
+               OpName %FragmentInputs "FragmentInputs"
+               OpMemberName %FragmentInputs 0 "loc0"
+               OpMemberName %FragmentInputs 1 "loc1"
+               OpMemberName %FragmentInputs 2 "loc2"
+               OpMemberName %FragmentInputs 3 "loc3"
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_1 Location 1
+               OpDecorate %tint_symbol_2 Location 2
+               OpDecorate %tint_symbol_3 Location 3
+               OpMemberDecorate %FragmentInputs 0 Offset 0
+               OpMemberDecorate %FragmentInputs 1 Offset 4
+               OpMemberDecorate %FragmentInputs 2 Offset 8
+               OpMemberDecorate %FragmentInputs 3 Offset 16
+        %int = OpTypeInt 32 1
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol = OpVariable %_ptr_Input_int Input
+       %uint = OpTypeInt 32 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol_1 = OpVariable %_ptr_Input_uint Input
+      %float = OpTypeFloat 32
+%_ptr_Input_float = OpTypePointer Input %float
+%tint_symbol_2 = OpVariable %_ptr_Input_float Input
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol_3 = OpVariable %_ptr_Input_v4float Input
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+%FragmentInputs = OpTypeStruct %int %uint %float %v4float
+       %main = OpFunction %void None %13
+         %16 = OpLabel
+         %18 = OpLoad %int %tint_symbol
+         %19 = OpLoad %uint %tint_symbol_1
+         %20 = OpLoad %float %tint_symbol_2
+         %21 = OpLoad %v4float %tint_symbol_3
+         %22 = OpCompositeConstruct %FragmentInputs %18 %19 %20 %21
+         %23 = OpCompositeExtract %int %22 0
+         %24 = OpCompositeExtract %uint %22 1
+         %25 = OpCompositeExtract %float %22 2
+         %26 = OpCompositeExtract %v4float %22 3
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl b/test/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl
new file mode 100644
index 0000000..f5f3a8b
--- /dev/null
+++ b/test/shader_io/fragment_input_locations_struct.wgsl.expected.wgsl
@@ -0,0 +1,18 @@
+struct FragmentInputs {
+  [[location(0)]]
+  loc0 : i32;
+  [[location(1)]]
+  loc1 : u32;
+  [[location(2)]]
+  loc2 : f32;
+  [[location(3)]]
+  loc3 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main(inputs : FragmentInputs) {
+  let i : i32 = inputs.loc0;
+  let u : u32 = inputs.loc1;
+  let f : f32 = inputs.loc2;
+  let v : vec4<f32> = inputs.loc3;
+}
diff --git a/test/shader_io/fragment_input_mixed.wgsl b/test/shader_io/fragment_input_mixed.wgsl
new file mode 100644
index 0000000..d6864ee
--- /dev/null
+++ b/test/shader_io/fragment_input_mixed.wgsl
@@ -0,0 +1,27 @@
+struct FragmentInputs0 {
+  [[builtin(position)]] position : vec4<f32>;
+  [[location(0)]] loc0 : i32;
+};
+struct FragmentInputs1 {
+  [[location(3)]] loc3 : vec4<f32>;
+  [[builtin(sample_mask)]] sample_mask : u32;
+};
+
+[[stage(fragment)]]
+fn main(
+  inputs0 : FragmentInputs0,
+  [[builtin(front_facing)]] front_facing : bool,
+  [[location(1)]] loc1 : u32,
+  [[builtin(sample_index)]] sample_index : u32,
+  inputs1 : FragmentInputs1,
+  [[location(2)]] loc2 : f32,
+) {
+  if (front_facing) {
+    let foo : vec4<f32> = inputs0.position;
+    let bar : u32 = sample_index + inputs1.sample_mask;
+    let i : i32 = inputs0.loc0;
+    let u : u32 = loc1;
+    let f : f32 = loc2;
+    let v : vec4<f32> = inputs1.loc3;
+  }
+}
diff --git a/test/shader_io/fragment_input_mixed.wgsl.expected.hlsl b/test/shader_io/fragment_input_mixed.wgsl.expected.hlsl
new file mode 100644
index 0000000..d83e6cc
--- /dev/null
+++ b/test/shader_io/fragment_input_mixed.wgsl.expected.hlsl
@@ -0,0 +1,37 @@
+struct FragmentInputs0 {
+  float4 position;
+  int loc0;
+};
+struct FragmentInputs1 {
+  float4 loc3;
+  uint sample_mask;
+};
+struct tint_symbol_1 {
+  int loc0 : TEXCOORD0;
+  uint loc1 : TEXCOORD1;
+  float loc2 : TEXCOORD2;
+  float4 loc3 : TEXCOORD3;
+  float4 position : SV_Position;
+  bool front_facing : SV_IsFrontFace;
+  uint sample_index : SV_SampleIndex;
+  uint sample_mask : SV_Coverage;
+};
+
+void main(tint_symbol_1 tint_symbol) {
+  const FragmentInputs0 inputs0 = {tint_symbol.position, tint_symbol.loc0};
+  const bool front_facing = tint_symbol.front_facing;
+  const uint loc1 = tint_symbol.loc1;
+  const uint sample_index = tint_symbol.sample_index;
+  const FragmentInputs1 inputs1 = {tint_symbol.loc3, tint_symbol.sample_mask};
+  const float loc2 = tint_symbol.loc2;
+  if (front_facing) {
+    const float4 foo = inputs0.position;
+    const uint bar = (sample_index + inputs1.sample_mask);
+    const int i = inputs0.loc0;
+    const uint u = loc1;
+    const float f = loc2;
+    const float4 v = inputs1.loc3;
+  }
+  return;
+}
+
diff --git a/test/shader_io/fragment_input_mixed.wgsl.expected.msl b/test/shader_io/fragment_input_mixed.wgsl.expected.msl
new file mode 100644
index 0000000..a115991
--- /dev/null
+++ b/test/shader_io/fragment_input_mixed.wgsl.expected.msl
@@ -0,0 +1,40 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct FragmentInputs0 {
+  float4 position;
+  int loc0;
+};
+struct FragmentInputs1 {
+  float4 loc3;
+  uint sample_mask;
+};
+struct tint_symbol_2 {
+  int loc0 [[user(locn0)]];
+  uint loc1 [[user(locn1)]];
+  float loc2 [[user(locn2)]];
+  float4 loc3 [[user(locn3)]];
+  float4 position [[position]];
+  bool front_facing [[front_facing]];
+  uint sample_index [[sample_id]];
+  uint sample_mask [[sample_mask]];
+};
+
+fragment void tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  FragmentInputs0 const inputs0 = {tint_symbol_1.position, tint_symbol_1.loc0};
+  bool const front_facing = tint_symbol_1.front_facing;
+  uint const loc1 = tint_symbol_1.loc1;
+  uint const sample_index = tint_symbol_1.sample_index;
+  FragmentInputs1 const inputs1 = {tint_symbol_1.loc3, tint_symbol_1.sample_mask};
+  float const loc2 = tint_symbol_1.loc2;
+  if (front_facing) {
+    float4 const foo = inputs0.position;
+    uint const bar = (sample_index + inputs1.sample_mask);
+    int const i = inputs0.loc0;
+    uint const u = loc1;
+    float const f = loc2;
+    float4 const v = inputs1.loc3;
+  }
+  return;
+}
+
diff --git a/test/shader_io/fragment_input_mixed.wgsl.expected.spvasm b/test/shader_io/fragment_input_mixed.wgsl.expected.spvasm
new file mode 100644
index 0000000..df5c0a7
--- /dev/null
+++ b/test/shader_io/fragment_input_mixed.wgsl.expected.spvasm
@@ -0,0 +1,89 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 47
+; Schema: 0
+               OpCapability Shader
+               OpCapability SampleRateShading
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol %tint_symbol_1 %tint_symbol_6 %tint_symbol_7 %tint_symbol_3 %tint_symbol_5 %tint_symbol_4 %tint_symbol_9
+               OpExecutionMode %main OriginUpperLeft
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %tint_symbol_6 "tint_symbol_6"
+               OpName %tint_symbol_7 "tint_symbol_7"
+               OpName %tint_symbol_9 "tint_symbol_9"
+               OpName %main "main"
+               OpName %FragmentInputs0 "FragmentInputs0"
+               OpMemberName %FragmentInputs0 0 "position"
+               OpMemberName %FragmentInputs0 1 "loc0"
+               OpName %FragmentInputs1 "FragmentInputs1"
+               OpMemberName %FragmentInputs1 0 "loc3"
+               OpMemberName %FragmentInputs1 1 "sample_mask"
+               OpDecorate %tint_symbol BuiltIn FragCoord
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_3 BuiltIn FrontFacing
+               OpDecorate %tint_symbol_4 Location 1
+               OpDecorate %tint_symbol_5 BuiltIn SampleId
+               OpDecorate %tint_symbol_6 Location 3
+               OpDecorate %_arr_uint_uint_1 ArrayStride 4
+               OpDecorate %tint_symbol_7 BuiltIn SampleMask
+               OpDecorate %tint_symbol_9 Location 2
+               OpMemberDecorate %FragmentInputs0 0 Offset 0
+               OpMemberDecorate %FragmentInputs0 1 Offset 16
+               OpMemberDecorate %FragmentInputs1 0 Offset 0
+               OpMemberDecorate %FragmentInputs1 1 Offset 16
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol = OpVariable %_ptr_Input_v4float Input
+        %int = OpTypeInt 32 1
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+       %bool = OpTypeBool
+%_ptr_Input_bool = OpTypePointer Input %bool
+%tint_symbol_3 = OpVariable %_ptr_Input_bool Input
+       %uint = OpTypeInt 32 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol_4 = OpVariable %_ptr_Input_uint Input
+%tint_symbol_5 = OpVariable %_ptr_Input_uint Input
+%tint_symbol_6 = OpVariable %_ptr_Input_v4float Input
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+%_ptr_Input__arr_uint_uint_1 = OpTypePointer Input %_arr_uint_uint_1
+%tint_symbol_7 = OpVariable %_ptr_Input__arr_uint_uint_1 Input
+%_ptr_Input_float = OpTypePointer Input %float
+%tint_symbol_9 = OpVariable %_ptr_Input_float Input
+       %void = OpTypeVoid
+         %22 = OpTypeFunction %void
+%FragmentInputs0 = OpTypeStruct %v4float %int
+%FragmentInputs1 = OpTypeStruct %v4float %uint
+      %int_0 = OpConstant %int 0
+       %main = OpFunction %void None %22
+         %25 = OpLabel
+         %27 = OpLoad %v4float %tint_symbol
+         %28 = OpLoad %int %tint_symbol_1
+         %29 = OpCompositeConstruct %FragmentInputs0 %27 %28
+         %31 = OpLoad %v4float %tint_symbol_6
+         %33 = OpAccessChain %_ptr_Input_uint %tint_symbol_7 %int_0
+         %34 = OpLoad %uint %33
+         %35 = OpCompositeConstruct %FragmentInputs1 %31 %34
+         %36 = OpLoad %bool %tint_symbol_3
+               OpSelectionMerge %37 None
+               OpBranchConditional %36 %38 %37
+         %38 = OpLabel
+         %39 = OpCompositeExtract %v4float %29 0
+         %40 = OpLoad %uint %tint_symbol_5
+         %41 = OpCompositeExtract %uint %35 1
+         %42 = OpIAdd %uint %40 %41
+         %43 = OpCompositeExtract %int %29 1
+         %44 = OpLoad %uint %tint_symbol_4
+         %45 = OpLoad %float %tint_symbol_9
+         %46 = OpCompositeExtract %v4float %35 0
+               OpBranch %37
+         %37 = OpLabel
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/fragment_input_mixed.wgsl.expected.wgsl b/test/shader_io/fragment_input_mixed.wgsl.expected.wgsl
new file mode 100644
index 0000000..afc2348
--- /dev/null
+++ b/test/shader_io/fragment_input_mixed.wgsl.expected.wgsl
@@ -0,0 +1,25 @@
+struct FragmentInputs0 {
+  [[builtin(position)]]
+  position : vec4<f32>;
+  [[location(0)]]
+  loc0 : i32;
+};
+
+struct FragmentInputs1 {
+  [[location(3)]]
+  loc3 : vec4<f32>;
+  [[builtin(sample_mask)]]
+  sample_mask : u32;
+};
+
+[[stage(fragment)]]
+fn main(inputs0 : FragmentInputs0, [[builtin(front_facing)]] front_facing : bool, [[location(1)]] loc1 : u32, [[builtin(sample_index)]] sample_index : u32, inputs1 : FragmentInputs1, [[location(2)]] loc2 : f32) {
+  if (front_facing) {
+    let foo : vec4<f32> = inputs0.position;
+    let bar : u32 = (sample_index + inputs1.sample_mask);
+    let i : i32 = inputs0.loc0;
+    let u : u32 = loc1;
+    let f : f32 = loc2;
+    let v : vec4<f32> = inputs1.loc3;
+  }
+}
diff --git a/test/shader_io/fragment_output_builtins.wgsl b/test/shader_io/fragment_output_builtins.wgsl
new file mode 100644
index 0000000..462cb77
--- /dev/null
+++ b/test/shader_io/fragment_output_builtins.wgsl
@@ -0,0 +1,9 @@
+[[stage(fragment)]]
+fn main1() -> [[builtin(frag_depth)]] f32 {
+  return 1.0;
+}
+
+[[stage(fragment)]]
+fn main2() -> [[builtin(sample_mask)]] u32 {
+  return 1u;
+}
diff --git a/test/shader_io/fragment_output_builtins.wgsl.expected.hlsl b/test/shader_io/fragment_output_builtins.wgsl.expected.hlsl
new file mode 100644
index 0000000..30309e5
--- /dev/null
+++ b/test/shader_io/fragment_output_builtins.wgsl.expected.hlsl
@@ -0,0 +1,17 @@
+struct tint_symbol {
+  float value : SV_Depth;
+};
+struct tint_symbol_1 {
+  uint value : SV_Coverage;
+};
+
+tint_symbol main1() {
+  const tint_symbol tint_symbol_2 = {1.0f};
+  return tint_symbol_2;
+}
+
+tint_symbol_1 main2() {
+  const tint_symbol_1 tint_symbol_3 = {1u};
+  return tint_symbol_3;
+}
+
diff --git a/test/shader_io/fragment_output_builtins.wgsl.expected.msl b/test/shader_io/fragment_output_builtins.wgsl.expected.msl
new file mode 100644
index 0000000..d56fd42
--- /dev/null
+++ b/test/shader_io/fragment_output_builtins.wgsl.expected.msl
@@ -0,0 +1,20 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_symbol {
+  float value [[depth(any)]];
+};
+struct tint_symbol_1 {
+  uint value [[sample_mask]];
+};
+
+fragment tint_symbol main1() {
+  tint_symbol const tint_symbol_2 = {1.0f};
+  return tint_symbol_2;
+}
+
+fragment tint_symbol_1 main2() {
+  tint_symbol_1 const tint_symbol_3 = {1u};
+  return tint_symbol_3;
+}
+
diff --git a/test/shader_io/fragment_output_builtins.wgsl.expected.spvasm b/test/shader_io/fragment_output_builtins.wgsl.expected.spvasm
new file mode 100644
index 0000000..cf60151
--- /dev/null
+++ b/test/shader_io/fragment_output_builtins.wgsl.expected.spvasm
@@ -0,0 +1,64 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 32
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main1 "main1" %tint_symbol_1
+               OpEntryPoint Fragment %main2 "main2" %tint_symbol_4
+               OpExecutionMode %main1 OriginUpperLeft
+               OpExecutionMode %main1 DepthReplacing
+               OpExecutionMode %main2 OriginUpperLeft
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main1 "main1"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main2 "main2"
+               OpDecorate %tint_symbol_1 BuiltIn FragDepth
+               OpDecorate %_arr_uint_uint_1 ArrayStride 4
+               OpDecorate %tint_symbol_4 BuiltIn SampleMask
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_symbol_1 = OpVariable %_ptr_Output_float Output %4
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+%_ptr_Output__arr_uint_uint_1 = OpTypePointer Output %_arr_uint_uint_1
+         %10 = OpConstantNull %_arr_uint_uint_1
+%tint_symbol_4 = OpVariable %_ptr_Output__arr_uint_uint_1 Output %10
+       %void = OpTypeVoid
+         %11 = OpTypeFunction %void %float
+         %16 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+         %21 = OpTypeFunction %void %uint
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Output_uint = OpTypePointer Output %uint
+%tint_symbol_2 = OpFunction %void None %11
+%tint_symbol = OpFunctionParameter %float
+         %15 = OpLabel
+               OpStore %tint_symbol_1 %tint_symbol
+               OpReturn
+               OpFunctionEnd
+      %main1 = OpFunction %void None %16
+         %18 = OpLabel
+         %19 = OpFunctionCall %void %tint_symbol_2 %float_1
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_5 = OpFunction %void None %21
+%tint_symbol_3 = OpFunctionParameter %uint
+         %24 = OpLabel
+         %28 = OpAccessChain %_ptr_Output_uint %tint_symbol_4 %int_0
+               OpStore %28 %tint_symbol_3
+               OpReturn
+               OpFunctionEnd
+      %main2 = OpFunction %void None %16
+         %30 = OpLabel
+         %31 = OpFunctionCall %void %tint_symbol_5 %uint_1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/fragment_output_builtins.wgsl.expected.wgsl b/test/shader_io/fragment_output_builtins.wgsl.expected.wgsl
new file mode 100644
index 0000000..462cb77
--- /dev/null
+++ b/test/shader_io/fragment_output_builtins.wgsl.expected.wgsl
@@ -0,0 +1,9 @@
+[[stage(fragment)]]
+fn main1() -> [[builtin(frag_depth)]] f32 {
+  return 1.0;
+}
+
+[[stage(fragment)]]
+fn main2() -> [[builtin(sample_mask)]] u32 {
+  return 1u;
+}
diff --git a/test/shader_io/fragment_output_builtins_struct.wgsl b/test/shader_io/fragment_output_builtins_struct.wgsl
new file mode 100644
index 0000000..d7b37f8
--- /dev/null
+++ b/test/shader_io/fragment_output_builtins_struct.wgsl
@@ -0,0 +1,9 @@
+struct FragmentOutputs {
+  [[builtin(frag_depth)]] frag_depth : f32;
+  [[builtin(sample_mask)]] sample_mask : u32;
+};
+
+[[stage(fragment)]]
+fn main() -> FragmentOutputs {
+  return FragmentOutputs(1.0, 1u);
+}
diff --git a/test/shader_io/fragment_output_builtins_struct.wgsl.expected.hlsl b/test/shader_io/fragment_output_builtins_struct.wgsl.expected.hlsl
new file mode 100644
index 0000000..d266413
--- /dev/null
+++ b/test/shader_io/fragment_output_builtins_struct.wgsl.expected.hlsl
@@ -0,0 +1,15 @@
+struct FragmentOutputs {
+  float frag_depth;
+  uint sample_mask;
+};
+struct tint_symbol {
+  float frag_depth : SV_Depth;
+  uint sample_mask : SV_Coverage;
+};
+
+tint_symbol main() {
+  const FragmentOutputs tint_symbol_1 = {1.0f, 1u};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.frag_depth, tint_symbol_1.sample_mask};
+  return tint_symbol_2;
+}
+
diff --git a/test/shader_io/fragment_output_builtins_struct.wgsl.expected.msl b/test/shader_io/fragment_output_builtins_struct.wgsl.expected.msl
new file mode 100644
index 0000000..343945f
--- /dev/null
+++ b/test/shader_io/fragment_output_builtins_struct.wgsl.expected.msl
@@ -0,0 +1,18 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct FragmentOutputs {
+  float frag_depth;
+  uint sample_mask;
+};
+struct tint_symbol_1 {
+  float frag_depth [[depth(any)]];
+  uint sample_mask [[sample_mask]];
+};
+
+fragment tint_symbol_1 tint_symbol() {
+  FragmentOutputs const tint_symbol_2 = {1.0f, 1u};
+  tint_symbol_1 const tint_symbol_3 = {tint_symbol_2.frag_depth, tint_symbol_2.sample_mask};
+  return tint_symbol_3;
+}
+
diff --git a/test/shader_io/fragment_output_builtins_struct.wgsl.expected.spvasm b/test/shader_io/fragment_output_builtins_struct.wgsl.expected.spvasm
new file mode 100644
index 0000000..45f416d
--- /dev/null
+++ b/test/shader_io/fragment_output_builtins_struct.wgsl.expected.spvasm
@@ -0,0 +1,57 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 29
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %FragmentOutputs "FragmentOutputs"
+               OpMemberName %FragmentOutputs 0 "frag_depth"
+               OpMemberName %FragmentOutputs 1 "sample_mask"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 BuiltIn FragDepth
+               OpDecorate %_arr_uint_uint_1 ArrayStride 4
+               OpDecorate %tint_symbol_2 BuiltIn SampleMask
+               OpMemberDecorate %FragmentOutputs 0 Offset 0
+               OpMemberDecorate %FragmentOutputs 1 Offset 4
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_symbol_1 = OpVariable %_ptr_Output_float Output %4
+       %uint = OpTypeInt 32 0
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+%_ptr_Output__arr_uint_uint_1 = OpTypePointer Output %_arr_uint_uint_1
+         %10 = OpConstantNull %_arr_uint_uint_1
+%tint_symbol_2 = OpVariable %_ptr_Output__arr_uint_uint_1 Output %10
+       %void = OpTypeVoid
+%FragmentOutputs = OpTypeStruct %float %uint
+         %11 = OpTypeFunction %void %FragmentOutputs
+        %int = OpTypeInt 32 1
+      %int_0 = OpConstant %int 0
+%_ptr_Output_uint = OpTypePointer Output %uint
+         %23 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+         %28 = OpConstantComposite %FragmentOutputs %float_1 %uint_1
+%tint_symbol_3 = OpFunction %void None %11
+%tint_symbol = OpFunctionParameter %FragmentOutputs
+         %16 = OpLabel
+         %17 = OpCompositeExtract %float %tint_symbol 0
+               OpStore %tint_symbol_1 %17
+         %21 = OpAccessChain %_ptr_Output_uint %tint_symbol_2 %int_0
+         %22 = OpCompositeExtract %uint %tint_symbol 1
+               OpStore %21 %22
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %23
+         %25 = OpLabel
+         %26 = OpFunctionCall %void %tint_symbol_3 %28
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl b/test/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl
new file mode 100644
index 0000000..6617a26
--- /dev/null
+++ b/test/shader_io/fragment_output_builtins_struct.wgsl.expected.wgsl
@@ -0,0 +1,11 @@
+struct FragmentOutputs {
+  [[builtin(frag_depth)]]
+  frag_depth : f32;
+  [[builtin(sample_mask)]]
+  sample_mask : u32;
+};
+
+[[stage(fragment)]]
+fn main() -> FragmentOutputs {
+  return FragmentOutputs(1.0, 1u);
+}
diff --git a/test/shader_io/fragment_output_locations.wgsl b/test/shader_io/fragment_output_locations.wgsl
new file mode 100644
index 0000000..b5858e8
--- /dev/null
+++ b/test/shader_io/fragment_output_locations.wgsl
@@ -0,0 +1,19 @@
+[[stage(fragment)]]
+fn main0() -> [[location(0)]] i32 {
+  return 1;
+}
+
+[[stage(fragment)]]
+fn main1() -> [[location(1)]] u32 {
+  return 1u;
+}
+
+[[stage(fragment)]]
+fn main2() -> [[location(2)]] f32 {
+  return 1.0;
+}
+
+[[stage(fragment)]]
+fn main3() -> [[location(3)]] vec4<f32> {
+  return vec4<f32>(1.0, 2.0, 3.0, 4.0);
+}
diff --git a/test/shader_io/fragment_output_locations.wgsl.expected.hlsl b/test/shader_io/fragment_output_locations.wgsl.expected.hlsl
new file mode 100644
index 0000000..69f77e0
--- /dev/null
+++ b/test/shader_io/fragment_output_locations.wgsl.expected.hlsl
@@ -0,0 +1,33 @@
+struct tint_symbol {
+  int value : SV_Target0;
+};
+struct tint_symbol_1 {
+  uint value : SV_Target1;
+};
+struct tint_symbol_2 {
+  float value : SV_Target2;
+};
+struct tint_symbol_3 {
+  float4 value : SV_Target3;
+};
+
+tint_symbol main0() {
+  const tint_symbol tint_symbol_4 = {1};
+  return tint_symbol_4;
+}
+
+tint_symbol_1 main1() {
+  const tint_symbol_1 tint_symbol_5 = {1u};
+  return tint_symbol_5;
+}
+
+tint_symbol_2 main2() {
+  const tint_symbol_2 tint_symbol_6 = {1.0f};
+  return tint_symbol_6;
+}
+
+tint_symbol_3 main3() {
+  const tint_symbol_3 tint_symbol_7 = {float4(1.0f, 2.0f, 3.0f, 4.0f)};
+  return tint_symbol_7;
+}
+
diff --git a/test/shader_io/fragment_output_locations.wgsl.expected.msl b/test/shader_io/fragment_output_locations.wgsl.expected.msl
new file mode 100644
index 0000000..58191b0
--- /dev/null
+++ b/test/shader_io/fragment_output_locations.wgsl.expected.msl
@@ -0,0 +1,36 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_symbol {
+  int value [[color(0)]];
+};
+struct tint_symbol_1 {
+  uint value [[color(1)]];
+};
+struct tint_symbol_2 {
+  float value [[color(2)]];
+};
+struct tint_symbol_3 {
+  float4 value [[color(3)]];
+};
+
+fragment tint_symbol main0() {
+  tint_symbol const tint_symbol_4 = {1};
+  return tint_symbol_4;
+}
+
+fragment tint_symbol_1 main1() {
+  tint_symbol_1 const tint_symbol_5 = {1u};
+  return tint_symbol_5;
+}
+
+fragment tint_symbol_2 main2() {
+  tint_symbol_2 const tint_symbol_6 = {1.0f};
+  return tint_symbol_6;
+}
+
+fragment tint_symbol_3 main3() {
+  tint_symbol_3 const tint_symbol_7 = {float4(1.0f, 2.0f, 3.0f, 4.0f)};
+  return tint_symbol_7;
+}
+
diff --git a/test/shader_io/fragment_output_locations.wgsl.expected.spvasm b/test/shader_io/fragment_output_locations.wgsl.expected.spvasm
new file mode 100644
index 0000000..ef873b5
--- /dev/null
+++ b/test/shader_io/fragment_output_locations.wgsl.expected.spvasm
@@ -0,0 +1,108 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 54
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main0 "main0" %tint_symbol_1
+               OpEntryPoint Fragment %main1 "main1" %tint_symbol_4
+               OpEntryPoint Fragment %main2 "main2" %tint_symbol_7
+               OpEntryPoint Fragment %main3 "main3" %tint_symbol_10
+               OpExecutionMode %main0 OriginUpperLeft
+               OpExecutionMode %main1 OriginUpperLeft
+               OpExecutionMode %main2 OriginUpperLeft
+               OpExecutionMode %main3 OriginUpperLeft
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_7 "tint_symbol_7"
+               OpName %tint_symbol_10 "tint_symbol_10"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main0 "main0"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main1 "main1"
+               OpName %tint_symbol_8 "tint_symbol_8"
+               OpName %tint_symbol_6 "tint_symbol_6"
+               OpName %main2 "main2"
+               OpName %tint_symbol_11 "tint_symbol_11"
+               OpName %tint_symbol_9 "tint_symbol_9"
+               OpName %main3 "main3"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_4 Location 1
+               OpDecorate %tint_symbol_7 Location 2
+               OpDecorate %tint_symbol_10 Location 3
+        %int = OpTypeInt 32 1
+%_ptr_Output_int = OpTypePointer Output %int
+          %4 = OpConstantNull %int
+%tint_symbol_1 = OpVariable %_ptr_Output_int Output %4
+       %uint = OpTypeInt 32 0
+%_ptr_Output_uint = OpTypePointer Output %uint
+          %8 = OpConstantNull %uint
+%tint_symbol_4 = OpVariable %_ptr_Output_uint Output %8
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+         %12 = OpConstantNull %float
+%tint_symbol_7 = OpVariable %_ptr_Output_float Output %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+         %16 = OpConstantNull %v4float
+%tint_symbol_10 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+         %17 = OpTypeFunction %void %int
+         %22 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+         %27 = OpTypeFunction %void %uint
+     %uint_1 = OpConstant %uint 1
+         %35 = OpTypeFunction %void %float
+    %float_1 = OpConstant %float 1
+         %43 = OpTypeFunction %void %v4float
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %53 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+%tint_symbol_2 = OpFunction %void None %17
+%tint_symbol = OpFunctionParameter %int
+         %21 = OpLabel
+               OpStore %tint_symbol_1 %tint_symbol
+               OpReturn
+               OpFunctionEnd
+      %main0 = OpFunction %void None %22
+         %24 = OpLabel
+         %25 = OpFunctionCall %void %tint_symbol_2 %int_1
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_5 = OpFunction %void None %27
+%tint_symbol_3 = OpFunctionParameter %uint
+         %30 = OpLabel
+               OpStore %tint_symbol_4 %tint_symbol_3
+               OpReturn
+               OpFunctionEnd
+      %main1 = OpFunction %void None %22
+         %32 = OpLabel
+         %33 = OpFunctionCall %void %tint_symbol_5 %uint_1
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_8 = OpFunction %void None %35
+%tint_symbol_6 = OpFunctionParameter %float
+         %38 = OpLabel
+               OpStore %tint_symbol_7 %tint_symbol_6
+               OpReturn
+               OpFunctionEnd
+      %main2 = OpFunction %void None %22
+         %40 = OpLabel
+         %41 = OpFunctionCall %void %tint_symbol_8 %float_1
+               OpReturn
+               OpFunctionEnd
+%tint_symbol_11 = OpFunction %void None %43
+%tint_symbol_9 = OpFunctionParameter %v4float
+         %46 = OpLabel
+               OpStore %tint_symbol_10 %tint_symbol_9
+               OpReturn
+               OpFunctionEnd
+      %main3 = OpFunction %void None %22
+         %48 = OpLabel
+         %49 = OpFunctionCall %void %tint_symbol_11 %53
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/fragment_output_locations.wgsl.expected.wgsl b/test/shader_io/fragment_output_locations.wgsl.expected.wgsl
new file mode 100644
index 0000000..b5858e8
--- /dev/null
+++ b/test/shader_io/fragment_output_locations.wgsl.expected.wgsl
@@ -0,0 +1,19 @@
+[[stage(fragment)]]
+fn main0() -> [[location(0)]] i32 {
+  return 1;
+}
+
+[[stage(fragment)]]
+fn main1() -> [[location(1)]] u32 {
+  return 1u;
+}
+
+[[stage(fragment)]]
+fn main2() -> [[location(2)]] f32 {
+  return 1.0;
+}
+
+[[stage(fragment)]]
+fn main3() -> [[location(3)]] vec4<f32> {
+  return vec4<f32>(1.0, 2.0, 3.0, 4.0);
+}
diff --git a/test/shader_io/fragment_output_locations_struct.wgsl b/test/shader_io/fragment_output_locations_struct.wgsl
new file mode 100644
index 0000000..c196843
--- /dev/null
+++ b/test/shader_io/fragment_output_locations_struct.wgsl
@@ -0,0 +1,11 @@
+struct FragmentOutputs {
+  [[location(0)]] loc0 : i32;
+  [[location(1)]] loc1 : u32;
+  [[location(2)]] loc2 : f32;
+  [[location(3)]] loc3 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> FragmentOutputs {
+  return FragmentOutputs(1, 1u, 1.0, vec4<f32>(1.0, 2.0, 3.0, 4.0));
+}
diff --git a/test/shader_io/fragment_output_locations_struct.wgsl.expected.hlsl b/test/shader_io/fragment_output_locations_struct.wgsl.expected.hlsl
new file mode 100644
index 0000000..b399bc2
--- /dev/null
+++ b/test/shader_io/fragment_output_locations_struct.wgsl.expected.hlsl
@@ -0,0 +1,19 @@
+struct FragmentOutputs {
+  int loc0;
+  uint loc1;
+  float loc2;
+  float4 loc3;
+};
+struct tint_symbol {
+  int loc0 : SV_Target0;
+  uint loc1 : SV_Target1;
+  float loc2 : SV_Target2;
+  float4 loc3 : SV_Target3;
+};
+
+tint_symbol main() {
+  const FragmentOutputs tint_symbol_1 = {1, 1u, 1.0f, float4(1.0f, 2.0f, 3.0f, 4.0f)};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.loc0, tint_symbol_1.loc1, tint_symbol_1.loc2, tint_symbol_1.loc3};
+  return tint_symbol_2;
+}
+
diff --git a/test/shader_io/fragment_output_locations_struct.wgsl.expected.msl b/test/shader_io/fragment_output_locations_struct.wgsl.expected.msl
new file mode 100644
index 0000000..4e1b359
--- /dev/null
+++ b/test/shader_io/fragment_output_locations_struct.wgsl.expected.msl
@@ -0,0 +1,22 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct FragmentOutputs {
+  int loc0;
+  uint loc1;
+  float loc2;
+  float4 loc3;
+};
+struct tint_symbol_1 {
+  int loc0 [[color(0)]];
+  uint loc1 [[color(1)]];
+  float loc2 [[color(2)]];
+  float4 loc3 [[color(3)]];
+};
+
+fragment tint_symbol_1 tint_symbol() {
+  FragmentOutputs const tint_symbol_2 = {1, 1u, 1.0f, float4(1.0f, 2.0f, 3.0f, 4.0f)};
+  tint_symbol_1 const tint_symbol_3 = {tint_symbol_2.loc0, tint_symbol_2.loc1, tint_symbol_2.loc2, tint_symbol_2.loc3};
+  return tint_symbol_3;
+}
+
diff --git a/test/shader_io/fragment_output_locations_struct.wgsl.expected.spvasm b/test/shader_io/fragment_output_locations_struct.wgsl.expected.spvasm
new file mode 100644
index 0000000..9ad60b7
--- /dev/null
+++ b/test/shader_io/fragment_output_locations_struct.wgsl.expected.spvasm
@@ -0,0 +1,75 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2 %tint_symbol_3 %tint_symbol_4
+               OpExecutionMode %main OriginUpperLeft
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %FragmentOutputs "FragmentOutputs"
+               OpMemberName %FragmentOutputs 0 "loc0"
+               OpMemberName %FragmentOutputs 1 "loc1"
+               OpMemberName %FragmentOutputs 2 "loc2"
+               OpMemberName %FragmentOutputs 3 "loc3"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 Location 1
+               OpDecorate %tint_symbol_3 Location 2
+               OpDecorate %tint_symbol_4 Location 3
+               OpMemberDecorate %FragmentOutputs 0 Offset 0
+               OpMemberDecorate %FragmentOutputs 1 Offset 4
+               OpMemberDecorate %FragmentOutputs 2 Offset 8
+               OpMemberDecorate %FragmentOutputs 3 Offset 16
+        %int = OpTypeInt 32 1
+%_ptr_Output_int = OpTypePointer Output %int
+          %4 = OpConstantNull %int
+%tint_symbol_1 = OpVariable %_ptr_Output_int Output %4
+       %uint = OpTypeInt 32 0
+%_ptr_Output_uint = OpTypePointer Output %uint
+          %8 = OpConstantNull %uint
+%tint_symbol_2 = OpVariable %_ptr_Output_uint Output %8
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+         %12 = OpConstantNull %float
+%tint_symbol_3 = OpVariable %_ptr_Output_float Output %12
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+         %16 = OpConstantNull %v4float
+%tint_symbol_4 = OpVariable %_ptr_Output_v4float Output %16
+       %void = OpTypeVoid
+%FragmentOutputs = OpTypeStruct %int %uint %float %v4float
+         %17 = OpTypeFunction %void %FragmentOutputs
+         %27 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %37 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+         %38 = OpConstantComposite %FragmentOutputs %int_1 %uint_1 %float_1 %37
+%tint_symbol_5 = OpFunction %void None %17
+%tint_symbol = OpFunctionParameter %FragmentOutputs
+         %22 = OpLabel
+         %23 = OpCompositeExtract %int %tint_symbol 0
+               OpStore %tint_symbol_1 %23
+         %24 = OpCompositeExtract %uint %tint_symbol 1
+               OpStore %tint_symbol_2 %24
+         %25 = OpCompositeExtract %float %tint_symbol 2
+               OpStore %tint_symbol_3 %25
+         %26 = OpCompositeExtract %v4float %tint_symbol 3
+               OpStore %tint_symbol_4 %26
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %27
+         %29 = OpLabel
+         %30 = OpFunctionCall %void %tint_symbol_5 %38
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl b/test/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl
new file mode 100644
index 0000000..879805c
--- /dev/null
+++ b/test/shader_io/fragment_output_locations_struct.wgsl.expected.wgsl
@@ -0,0 +1,15 @@
+struct FragmentOutputs {
+  [[location(0)]]
+  loc0 : i32;
+  [[location(1)]]
+  loc1 : u32;
+  [[location(2)]]
+  loc2 : f32;
+  [[location(3)]]
+  loc3 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> FragmentOutputs {
+  return FragmentOutputs(1, 1u, 1.0, vec4<f32>(1.0, 2.0, 3.0, 4.0));
+}
diff --git a/test/shader_io/fragment_output_mixed.wgsl b/test/shader_io/fragment_output_mixed.wgsl
new file mode 100644
index 0000000..29e5108
--- /dev/null
+++ b/test/shader_io/fragment_output_mixed.wgsl
@@ -0,0 +1,13 @@
+struct FragmentOutputs {
+  [[location(0)]] loc0 : i32;
+  [[builtin(frag_depth)]] frag_depth : f32;
+  [[location(1)]] loc1 : u32;
+  [[location(2)]] loc2 : f32;
+  [[builtin(sample_mask)]] sample_mask : u32;
+  [[location(3)]] loc3 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> FragmentOutputs {
+  return FragmentOutputs(1, 2.0, 1u, 1.0, 2u, vec4<f32>(1.0, 2.0, 3.0, 4.0));
+}
diff --git a/test/shader_io/fragment_output_mixed.wgsl.expected.hlsl b/test/shader_io/fragment_output_mixed.wgsl.expected.hlsl
new file mode 100644
index 0000000..73f00c5
--- /dev/null
+++ b/test/shader_io/fragment_output_mixed.wgsl.expected.hlsl
@@ -0,0 +1,23 @@
+struct FragmentOutputs {
+  int loc0;
+  float frag_depth;
+  uint loc1;
+  float loc2;
+  uint sample_mask;
+  float4 loc3;
+};
+struct tint_symbol {
+  int loc0 : SV_Target0;
+  uint loc1 : SV_Target1;
+  float loc2 : SV_Target2;
+  float4 loc3 : SV_Target3;
+  float frag_depth : SV_Depth;
+  uint sample_mask : SV_Coverage;
+};
+
+tint_symbol main() {
+  const FragmentOutputs tint_symbol_1 = {1, 2.0f, 1u, 1.0f, 2u, float4(1.0f, 2.0f, 3.0f, 4.0f)};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.loc0, tint_symbol_1.loc1, tint_symbol_1.loc2, tint_symbol_1.loc3, tint_symbol_1.frag_depth, tint_symbol_1.sample_mask};
+  return tint_symbol_2;
+}
+
diff --git a/test/shader_io/fragment_output_mixed.wgsl.expected.msl b/test/shader_io/fragment_output_mixed.wgsl.expected.msl
new file mode 100644
index 0000000..a6e3359
--- /dev/null
+++ b/test/shader_io/fragment_output_mixed.wgsl.expected.msl
@@ -0,0 +1,26 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct FragmentOutputs {
+  int loc0;
+  float frag_depth;
+  uint loc1;
+  float loc2;
+  uint sample_mask;
+  float4 loc3;
+};
+struct tint_symbol_1 {
+  int loc0 [[color(0)]];
+  uint loc1 [[color(1)]];
+  float loc2 [[color(2)]];
+  float4 loc3 [[color(3)]];
+  float frag_depth [[depth(any)]];
+  uint sample_mask [[sample_mask]];
+};
+
+fragment tint_symbol_1 tint_symbol() {
+  FragmentOutputs const tint_symbol_2 = {1, 2.0f, 1u, 1.0f, 2u, float4(1.0f, 2.0f, 3.0f, 4.0f)};
+  tint_symbol_1 const tint_symbol_3 = {tint_symbol_2.loc0, tint_symbol_2.loc1, tint_symbol_2.loc2, tint_symbol_2.loc3, tint_symbol_2.frag_depth, tint_symbol_2.sample_mask};
+  return tint_symbol_3;
+}
+
diff --git a/test/shader_io/fragment_output_mixed.wgsl.expected.spvasm b/test/shader_io/fragment_output_mixed.wgsl.expected.spvasm
new file mode 100644
index 0000000..164fdf0
--- /dev/null
+++ b/test/shader_io/fragment_output_mixed.wgsl.expected.spvasm
@@ -0,0 +1,97 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 49
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %main "main" %tint_symbol_1 %tint_symbol_2 %tint_symbol_3 %tint_symbol_4 %tint_symbol_5 %tint_symbol_6
+               OpExecutionMode %main OriginUpperLeft
+               OpExecutionMode %main DepthReplacing
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %tint_symbol_6 "tint_symbol_6"
+               OpName %FragmentOutputs "FragmentOutputs"
+               OpMemberName %FragmentOutputs 0 "loc0"
+               OpMemberName %FragmentOutputs 1 "frag_depth"
+               OpMemberName %FragmentOutputs 2 "loc1"
+               OpMemberName %FragmentOutputs 3 "loc2"
+               OpMemberName %FragmentOutputs 4 "sample_mask"
+               OpMemberName %FragmentOutputs 5 "loc3"
+               OpName %tint_symbol_7 "tint_symbol_7"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 BuiltIn FragDepth
+               OpDecorate %tint_symbol_3 Location 1
+               OpDecorate %tint_symbol_4 Location 2
+               OpDecorate %_arr_uint_uint_1 ArrayStride 4
+               OpDecorate %tint_symbol_5 BuiltIn SampleMask
+               OpDecorate %tint_symbol_6 Location 3
+               OpMemberDecorate %FragmentOutputs 0 Offset 0
+               OpMemberDecorate %FragmentOutputs 1 Offset 4
+               OpMemberDecorate %FragmentOutputs 2 Offset 8
+               OpMemberDecorate %FragmentOutputs 3 Offset 12
+               OpMemberDecorate %FragmentOutputs 4 Offset 16
+               OpMemberDecorate %FragmentOutputs 5 Offset 32
+        %int = OpTypeInt 32 1
+%_ptr_Output_int = OpTypePointer Output %int
+          %4 = OpConstantNull %int
+%tint_symbol_1 = OpVariable %_ptr_Output_int Output %4
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %8 = OpConstantNull %float
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %8
+       %uint = OpTypeInt 32 0
+%_ptr_Output_uint = OpTypePointer Output %uint
+         %12 = OpConstantNull %uint
+%tint_symbol_3 = OpVariable %_ptr_Output_uint Output %12
+%tint_symbol_4 = OpVariable %_ptr_Output_float Output %8
+     %uint_1 = OpConstant %uint 1
+%_arr_uint_uint_1 = OpTypeArray %uint %uint_1
+%_ptr_Output__arr_uint_uint_1 = OpTypePointer Output %_arr_uint_uint_1
+         %18 = OpConstantNull %_arr_uint_uint_1
+%tint_symbol_5 = OpVariable %_ptr_Output__arr_uint_uint_1 Output %18
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+         %22 = OpConstantNull %v4float
+%tint_symbol_6 = OpVariable %_ptr_Output_v4float Output %22
+       %void = OpTypeVoid
+%FragmentOutputs = OpTypeStruct %int %float %uint %float %uint %v4float
+         %23 = OpTypeFunction %void %FragmentOutputs
+      %int_0 = OpConstant %int 0
+         %37 = OpTypeFunction %void
+      %int_1 = OpConstant %int 1
+    %float_2 = OpConstant %float 2
+    %float_1 = OpConstant %float 1
+     %uint_2 = OpConstant %uint 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %47 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+         %48 = OpConstantComposite %FragmentOutputs %int_1 %float_2 %uint_1 %float_1 %uint_2 %47
+%tint_symbol_7 = OpFunction %void None %23
+%tint_symbol = OpFunctionParameter %FragmentOutputs
+         %28 = OpLabel
+         %29 = OpCompositeExtract %int %tint_symbol 0
+               OpStore %tint_symbol_1 %29
+         %30 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %30
+         %31 = OpCompositeExtract %uint %tint_symbol 2
+               OpStore %tint_symbol_3 %31
+         %32 = OpCompositeExtract %float %tint_symbol 3
+               OpStore %tint_symbol_4 %32
+         %34 = OpAccessChain %_ptr_Output_uint %tint_symbol_5 %int_0
+         %35 = OpCompositeExtract %uint %tint_symbol 4
+               OpStore %34 %35
+         %36 = OpCompositeExtract %v4float %tint_symbol 5
+               OpStore %tint_symbol_6 %36
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %37
+         %39 = OpLabel
+         %40 = OpFunctionCall %void %tint_symbol_7 %48
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/fragment_output_mixed.wgsl.expected.wgsl b/test/shader_io/fragment_output_mixed.wgsl.expected.wgsl
new file mode 100644
index 0000000..3fb401c
--- /dev/null
+++ b/test/shader_io/fragment_output_mixed.wgsl.expected.wgsl
@@ -0,0 +1,19 @@
+struct FragmentOutputs {
+  [[location(0)]]
+  loc0 : i32;
+  [[builtin(frag_depth)]]
+  frag_depth : f32;
+  [[location(1)]]
+  loc1 : u32;
+  [[location(2)]]
+  loc2 : f32;
+  [[builtin(sample_mask)]]
+  sample_mask : u32;
+  [[location(3)]]
+  loc3 : vec4<f32>;
+};
+
+[[stage(fragment)]]
+fn main() -> FragmentOutputs {
+  return FragmentOutputs(1, 2.0, 1u, 1.0, 2u, vec4<f32>(1.0, 2.0, 3.0, 4.0));
+}
diff --git a/test/shader_io/shared_struct_different_stages.wgsl b/test/shader_io/shared_struct_different_stages.wgsl
new file mode 100644
index 0000000..802ce43
--- /dev/null
+++ b/test/shader_io/shared_struct_different_stages.wgsl
@@ -0,0 +1,16 @@
+struct Interface {
+  [[location(1)]] col1 : f32;
+  [[location(2)]] col2 : f32;
+  [[builtin(position)]] pos : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vert_main() -> Interface {
+  return Interface(0.4, 0.6, vec4<f32>());
+}
+
+[[stage(fragment)]]
+fn frag_main(colors : Interface) {
+  let r : f32 = colors.col1;
+  let g : f32 = colors.col2;
+}
diff --git a/test/shader_io/shared_struct_different_stages.wgsl.expected.hlsl b/test/shader_io/shared_struct_different_stages.wgsl.expected.hlsl
new file mode 100644
index 0000000..f15cb86
--- /dev/null
+++ b/test/shader_io/shared_struct_different_stages.wgsl.expected.hlsl
@@ -0,0 +1,29 @@
+struct Interface {
+  float col1;
+  float col2;
+  float4 pos;
+};
+struct tint_symbol {
+  float col1 : TEXCOORD1;
+  float col2 : TEXCOORD2;
+  float4 pos : SV_Position;
+};
+struct tint_symbol_3 {
+  float col1 : TEXCOORD1;
+  float col2 : TEXCOORD2;
+  float4 pos : SV_Position;
+};
+
+tint_symbol vert_main() {
+  const Interface tint_symbol_1 = {0.400000006f, 0.600000024f, float4(0.0f, 0.0f, 0.0f, 0.0f)};
+  const tint_symbol tint_symbol_4 = {tint_symbol_1.col1, tint_symbol_1.col2, tint_symbol_1.pos};
+  return tint_symbol_4;
+}
+
+void frag_main(tint_symbol_3 tint_symbol_2) {
+  const Interface colors = {tint_symbol_2.col1, tint_symbol_2.col2, tint_symbol_2.pos};
+  const float r = colors.col1;
+  const float g = colors.col2;
+  return;
+}
+
diff --git a/test/shader_io/shared_struct_different_stages.wgsl.expected.msl b/test/shader_io/shared_struct_different_stages.wgsl.expected.msl
new file mode 100644
index 0000000..f303dc0
--- /dev/null
+++ b/test/shader_io/shared_struct_different_stages.wgsl.expected.msl
@@ -0,0 +1,32 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct Interface {
+  float col1;
+  float col2;
+  float4 pos;
+};
+struct tint_symbol {
+  float col1 [[user(locn1)]];
+  float col2 [[user(locn2)]];
+  float4 pos [[position]];
+};
+struct tint_symbol_3 {
+  float col1 [[user(locn1)]];
+  float col2 [[user(locn2)]];
+  float4 pos [[position]];
+};
+
+vertex tint_symbol vert_main() {
+  Interface const tint_symbol_1 = {0.400000006f, 0.600000024f, float4()};
+  tint_symbol const tint_symbol_4 = {tint_symbol_1.col1, tint_symbol_1.col2, tint_symbol_1.pos};
+  return tint_symbol_4;
+}
+
+fragment void frag_main(tint_symbol_3 tint_symbol_2 [[stage_in]]) {
+  Interface const colors = {tint_symbol_2.col1, tint_symbol_2.col2, tint_symbol_2.pos};
+  float const r = colors.col1;
+  float const g = colors.col2;
+  return;
+}
+
diff --git a/test/shader_io/shared_struct_different_stages.wgsl.expected.spvasm b/test/shader_io/shared_struct_different_stages.wgsl.expected.spvasm
new file mode 100644
index 0000000..9c505c1
--- /dev/null
+++ b/test/shader_io/shared_struct_different_stages.wgsl.expected.spvasm
@@ -0,0 +1,85 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 41
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %vert_main "vert_main" %tint_pointsize %tint_symbol_1 %tint_symbol_2 %tint_symbol_3
+               OpEntryPoint Fragment %frag_main "frag_main" %tint_symbol_5 %tint_symbol_6 %tint_symbol_7
+               OpExecutionMode %frag_main OriginUpperLeft
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %tint_symbol_6 "tint_symbol_6"
+               OpName %tint_symbol_7 "tint_symbol_7"
+               OpName %Interface "Interface"
+               OpMemberName %Interface 0 "col1"
+               OpMemberName %Interface 1 "col2"
+               OpMemberName %Interface 2 "pos"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol "tint_symbol"
+               OpName %vert_main "vert_main"
+               OpName %frag_main "frag_main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol_1 Location 1
+               OpDecorate %tint_symbol_2 Location 2
+               OpDecorate %tint_symbol_3 BuiltIn Position
+               OpDecorate %tint_symbol_5 Location 1
+               OpDecorate %tint_symbol_6 Location 2
+               OpDecorate %tint_symbol_7 BuiltIn FragCoord
+               OpMemberDecorate %Interface 0 Offset 0
+               OpMemberDecorate %Interface 1 Offset 4
+               OpMemberDecorate %Interface 2 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+%tint_symbol_1 = OpVariable %_ptr_Output_float Output %4
+%tint_symbol_2 = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+         %10 = OpConstantNull %v4float
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %10
+%_ptr_Input_float = OpTypePointer Input %float
+%tint_symbol_5 = OpVariable %_ptr_Input_float Input
+%tint_symbol_6 = OpVariable %_ptr_Input_float Input
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol_7 = OpVariable %_ptr_Input_v4float Input
+       %void = OpTypeVoid
+  %Interface = OpTypeStruct %float %float %v4float
+         %16 = OpTypeFunction %void %Interface
+         %25 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+%float_0_400000006 = OpConstant %float 0.400000006
+%float_0_600000024 = OpConstant %float 0.600000024
+         %32 = OpConstantComposite %Interface %float_0_400000006 %float_0_600000024 %10
+%tint_symbol_4 = OpFunction %void None %16
+%tint_symbol = OpFunctionParameter %Interface
+         %21 = OpLabel
+         %22 = OpCompositeExtract %float %tint_symbol 0
+               OpStore %tint_symbol_1 %22
+         %23 = OpCompositeExtract %float %tint_symbol 1
+               OpStore %tint_symbol_2 %23
+         %24 = OpCompositeExtract %v4float %tint_symbol 2
+               OpStore %tint_symbol_3 %24
+               OpReturn
+               OpFunctionEnd
+  %vert_main = OpFunction %void None %25
+         %27 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %29 = OpFunctionCall %void %tint_symbol_4 %32
+               OpReturn
+               OpFunctionEnd
+  %frag_main = OpFunction %void None %25
+         %34 = OpLabel
+         %35 = OpLoad %float %tint_symbol_5
+         %36 = OpLoad %float %tint_symbol_6
+         %37 = OpLoad %v4float %tint_symbol_7
+         %38 = OpCompositeConstruct %Interface %35 %36 %37
+         %39 = OpCompositeExtract %float %38 0
+         %40 = OpCompositeExtract %float %38 1
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/shared_struct_different_stages.wgsl.expected.wgsl b/test/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
new file mode 100644
index 0000000..67a91d6
--- /dev/null
+++ b/test/shader_io/shared_struct_different_stages.wgsl.expected.wgsl
@@ -0,0 +1,19 @@
+struct Interface {
+  [[location(1)]]
+  col1 : f32;
+  [[location(2)]]
+  col2 : f32;
+  [[builtin(position)]]
+  pos : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn vert_main() -> Interface {
+  return Interface(0.400000006, 0.600000024, vec4<f32>());
+}
+
+[[stage(fragment)]]
+fn frag_main(colors : Interface) {
+  let r : f32 = colors.col1;
+  let g : f32 = colors.col2;
+}
diff --git a/test/shader_io/shared_struct_helper_function.wgsl b/test/shader_io/shared_struct_helper_function.wgsl
new file mode 100644
index 0000000..6527653
--- /dev/null
+++ b/test/shader_io/shared_struct_helper_function.wgsl
@@ -0,0 +1,16 @@
+struct VertexOutput {
+  [[builtin(position)]] pos : vec4<f32>;
+  [[location(0)]] loc0 : i32;
+};
+
+fn foo(x : f32) -> VertexOutput {
+  return VertexOutput(vec4<f32>(x, x, x, 1.0), 42);
+}
+
+fn vert_main1() -> VertexOutput {
+  return foo(0.5);
+}
+
+fn vert_main2() -> VertexOutput {
+  return foo(0.25);
+}
diff --git a/test/shader_io/shared_struct_helper_function.wgsl.expected.hlsl b/test/shader_io/shared_struct_helper_function.wgsl.expected.hlsl
new file mode 100644
index 0000000..46dca7e
--- /dev/null
+++ b/test/shader_io/shared_struct_helper_function.wgsl.expected.hlsl
@@ -0,0 +1,23 @@
+struct VertexOutput {
+  float4 pos;
+  int loc0;
+};
+
+VertexOutput foo(float x) {
+  const VertexOutput tint_symbol = {float4(x, x, x, 1.0f), 42};
+  return tint_symbol;
+}
+
+VertexOutput vert_main1() {
+  return foo(0.5f);
+}
+
+VertexOutput vert_main2() {
+  return foo(0.25f);
+}
+
+[numthreads(1, 1, 1)]
+void unused_entry_point() {
+  return;
+}
+
diff --git a/test/shader_io/shared_struct_helper_function.wgsl.expected.msl b/test/shader_io/shared_struct_helper_function.wgsl.expected.msl
new file mode 100644
index 0000000..f6c8f25
--- /dev/null
+++ b/test/shader_io/shared_struct_helper_function.wgsl.expected.msl
@@ -0,0 +1,21 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct VertexOutput {
+  float4 pos;
+  int loc0;
+};
+
+VertexOutput foo(float x) {
+  VertexOutput const tint_symbol = {float4(x, x, x, 1.0f), 42};
+  return tint_symbol;
+}
+
+VertexOutput vert_main1() {
+  return foo(0.5f);
+}
+
+VertexOutput vert_main2() {
+  return foo(0.25f);
+}
+
diff --git a/test/shader_io/shared_struct_helper_function.wgsl.expected.spvasm b/test/shader_io/shared_struct_helper_function.wgsl.expected.spvasm
new file mode 100644
index 0000000..ee3e97b
--- /dev/null
+++ b/test/shader_io/shared_struct_helper_function.wgsl.expected.spvasm
@@ -0,0 +1,52 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 26
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint GLCompute %unused_entry_point "unused_entry_point"
+               OpExecutionMode %unused_entry_point LocalSize 1 1 1
+               OpName %unused_entry_point "unused_entry_point"
+               OpName %VertexOutput "VertexOutput"
+               OpMemberName %VertexOutput 0 "pos"
+               OpMemberName %VertexOutput 1 "loc0"
+               OpName %foo "foo"
+               OpName %x "x"
+               OpName %vert_main1 "vert_main1"
+               OpName %vert_main2 "vert_main2"
+               OpMemberDecorate %VertexOutput 0 Offset 0
+               OpMemberDecorate %VertexOutput 1 Offset 16
+       %void = OpTypeVoid
+          %1 = OpTypeFunction %void
+      %float = OpTypeFloat 32
+    %v4float = OpTypeVector %float 4
+        %int = OpTypeInt 32 1
+%VertexOutput = OpTypeStruct %v4float %int
+          %5 = OpTypeFunction %VertexOutput %float
+    %float_1 = OpConstant %float 1
+     %int_42 = OpConstant %int 42
+         %17 = OpTypeFunction %VertexOutput
+  %float_0_5 = OpConstant %float 0.5
+ %float_0_25 = OpConstant %float 0.25
+%unused_entry_point = OpFunction %void None %1
+          %4 = OpLabel
+               OpReturn
+               OpFunctionEnd
+        %foo = OpFunction %VertexOutput None %5
+          %x = OpFunctionParameter %float
+         %12 = OpLabel
+         %14 = OpCompositeConstruct %v4float %x %x %x %float_1
+         %16 = OpCompositeConstruct %VertexOutput %14 %int_42
+               OpReturnValue %16
+               OpFunctionEnd
+ %vert_main1 = OpFunction %VertexOutput None %17
+         %19 = OpLabel
+         %20 = OpFunctionCall %VertexOutput %foo %float_0_5
+               OpReturnValue %20
+               OpFunctionEnd
+ %vert_main2 = OpFunction %VertexOutput None %17
+         %23 = OpLabel
+         %24 = OpFunctionCall %VertexOutput %foo %float_0_25
+               OpReturnValue %24
+               OpFunctionEnd
diff --git a/test/shader_io/shared_struct_helper_function.wgsl.expected.wgsl b/test/shader_io/shared_struct_helper_function.wgsl.expected.wgsl
new file mode 100644
index 0000000..e7a0978
--- /dev/null
+++ b/test/shader_io/shared_struct_helper_function.wgsl.expected.wgsl
@@ -0,0 +1,18 @@
+struct VertexOutput {
+  [[builtin(position)]]
+  pos : vec4<f32>;
+  [[location(0)]]
+  loc0 : i32;
+};
+
+fn foo(x : f32) -> VertexOutput {
+  return VertexOutput(vec4<f32>(x, x, x, 1.0), 42);
+}
+
+fn vert_main1() -> VertexOutput {
+  return foo(0.5);
+}
+
+fn vert_main2() -> VertexOutput {
+  return foo(0.25);
+}
diff --git a/test/shader_io/shared_struct_storage_buffer.wgsl b/test/shader_io/shared_struct_storage_buffer.wgsl
new file mode 100644
index 0000000..56f983c
--- /dev/null
+++ b/test/shader_io/shared_struct_storage_buffer.wgsl
@@ -0,0 +1,17 @@
+[[block]]
+struct S {
+  [[align(64)]] [[location(0)]] f : f32;
+  [[size(32)]] [[location(1)]] u : u32;
+  [[align(128)]] [[builtin(position)]] v : vec4<f32>;
+};
+
+[[group(0), binding(0)]]
+var<storage> output : [[access(write)]] S;
+
+[[stage(fragment)]]
+fn frag_main(input : S) {
+  let f : f32 = input.f;
+  let u : u32 = input.u;
+  let v : vec4<f32> = input.v;
+  output = input;
+}
diff --git a/test/shader_io/shared_struct_storage_buffer.wgsl.expected.hlsl b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.hlsl
new file mode 100644
index 0000000..69591b8
--- /dev/null
+++ b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.hlsl
@@ -0,0 +1,28 @@
+struct S {
+  float f;
+  uint u;
+  float4 v;
+};
+struct tint_symbol_1 {
+  float f : TEXCOORD0;
+  uint u : TEXCOORD1;
+  float4 v : SV_Position;
+};
+
+RWByteAddressBuffer output : register(u0, space0);
+
+void tint_symbol_5(RWByteAddressBuffer buffer, uint offset, S value) {
+  buffer.Store((offset + 0u), asuint(value.f));
+  buffer.Store((offset + 4u), asuint(value.u));
+  buffer.Store4((offset + 128u), asuint(value.v));
+}
+
+void frag_main(tint_symbol_1 tint_symbol) {
+  const S input = {tint_symbol.f, tint_symbol.u, tint_symbol.v};
+  const float f = input.f;
+  const uint u = input.u;
+  const float4 v = input.v;
+  tint_symbol_5(output, 0u, input);
+  return;
+}
+
diff --git a/test/shader_io/shared_struct_storage_buffer.wgsl.expected.msl b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.msl
new file mode 100644
index 0000000..8831e0a
--- /dev/null
+++ b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.msl
@@ -0,0 +1 @@
+SKIP: crbug.com/tint/853 type constructors broken with explicit layout structs
diff --git a/test/shader_io/shared_struct_storage_buffer.wgsl.expected.spvasm b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.spvasm
new file mode 100644
index 0000000..527ffad
--- /dev/null
+++ b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.spvasm
@@ -0,0 +1,54 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 24
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Fragment %frag_main "frag_main" %tint_symbol %tint_symbol_1 %tint_symbol_2
+               OpExecutionMode %frag_main OriginUpperLeft
+               OpName %S "S"
+               OpMemberName %S 0 "f"
+               OpMemberName %S 1 "u"
+               OpMemberName %S 2 "v"
+               OpName %output "output"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %frag_main "frag_main"
+               OpDecorate %S Block
+               OpMemberDecorate %S 0 Offset 0
+               OpMemberDecorate %S 1 Offset 4
+               OpMemberDecorate %S 2 Offset 128
+               OpDecorate %output NonReadable
+               OpDecorate %output DescriptorSet 0
+               OpDecorate %output Binding 0
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_1 Location 1
+               OpDecorate %tint_symbol_2 BuiltIn FragCoord
+      %float = OpTypeFloat 32
+       %uint = OpTypeInt 32 0
+    %v4float = OpTypeVector %float 4
+          %S = OpTypeStruct %float %uint %v4float
+%_ptr_StorageBuffer_S = OpTypePointer StorageBuffer %S
+     %output = OpVariable %_ptr_StorageBuffer_S StorageBuffer
+%_ptr_Input_float = OpTypePointer Input %float
+%tint_symbol = OpVariable %_ptr_Input_float Input
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol_1 = OpVariable %_ptr_Input_uint Input
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol_2 = OpVariable %_ptr_Input_v4float Input
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void
+  %frag_main = OpFunction %void None %13
+         %16 = OpLabel
+         %17 = OpLoad %float %tint_symbol
+         %18 = OpLoad %uint %tint_symbol_1
+         %19 = OpLoad %v4float %tint_symbol_2
+         %20 = OpCompositeConstruct %S %17 %18 %19
+         %21 = OpCompositeExtract %float %20 0
+         %22 = OpCompositeExtract %uint %20 1
+         %23 = OpCompositeExtract %v4float %20 2
+               OpStore %output %20
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl
new file mode 100644
index 0000000..db8682f
--- /dev/null
+++ b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.wgsl
@@ -0,0 +1,19 @@
+[[block]]
+struct S {
+  [[align(64), location(0)]]
+  f : f32;
+  [[size(32), location(1)]]
+  u : u32;
+  [[align(128), builtin(position)]]
+  v : vec4<f32>;
+};
+
+[[group(0), binding(0)]] var<storage> output : [[access(write)]] S;
+
+[[stage(fragment)]]
+fn frag_main(input : S) {
+  let f : f32 = input.f;
+  let u : u32 = input.u;
+  let v : vec4<f32> = input.v;
+  output = input;
+}
diff --git a/test/shader_io/vertex_input_builtins.wgsl b/test/shader_io/vertex_input_builtins.wgsl
new file mode 100644
index 0000000..6d207b5
--- /dev/null
+++ b/test/shader_io/vertex_input_builtins.wgsl
@@ -0,0 +1,8 @@
+[[stage(vertex)]]
+fn main(
+  [[builtin(vertex_index)]] vertex_index : u32,
+  [[builtin(instance_index)]] instance_index : u32,
+) -> [[builtin(position)]] vec4<f32> {
+  let foo : u32 = vertex_index + instance_index;
+  return vec4<f32>();
+}
diff --git a/test/shader_io/vertex_input_builtins.wgsl.expected.hlsl b/test/shader_io/vertex_input_builtins.wgsl.expected.hlsl
new file mode 100644
index 0000000..5a0e122
--- /dev/null
+++ b/test/shader_io/vertex_input_builtins.wgsl.expected.hlsl
@@ -0,0 +1,16 @@
+struct tint_symbol_1 {
+  uint vertex_index : SV_VertexID;
+  uint instance_index : SV_InstanceID;
+};
+struct tint_symbol_2 {
+  float4 value : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const uint vertex_index = tint_symbol.vertex_index;
+  const uint instance_index = tint_symbol.instance_index;
+  const uint foo = (vertex_index + instance_index);
+  const tint_symbol_2 tint_symbol_3 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+  return tint_symbol_3;
+}
+
diff --git a/test/shader_io/vertex_input_builtins.wgsl.expected.msl b/test/shader_io/vertex_input_builtins.wgsl.expected.msl
new file mode 100644
index 0000000..71d62fb
--- /dev/null
+++ b/test/shader_io/vertex_input_builtins.wgsl.expected.msl
@@ -0,0 +1 @@
+SKIP: crbug.com/tint/817 attribute only applies to parameters
diff --git a/test/shader_io/vertex_input_builtins.wgsl.expected.spvasm b/test/shader_io/vertex_input_builtins.wgsl.expected.spvasm
new file mode 100644
index 0000000..198293c
--- /dev/null
+++ b/test/shader_io/vertex_input_builtins.wgsl.expected.spvasm
@@ -0,0 +1,50 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 26
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_1 %tint_symbol_3
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol BuiltIn VertexIndex
+               OpDecorate %tint_symbol_1 BuiltIn InstanceIndex
+               OpDecorate %tint_symbol_3 BuiltIn Position
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+       %uint = OpTypeInt 32 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol = OpVariable %_ptr_Input_uint Input
+%tint_symbol_1 = OpVariable %_ptr_Input_uint Input
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+         %12 = OpConstantNull %v4float
+%tint_symbol_3 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void %v4float
+         %18 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+%tint_symbol_4 = OpFunction %void None %13
+%tint_symbol_2 = OpFunctionParameter %v4float
+         %17 = OpLabel
+               OpStore %tint_symbol_3 %tint_symbol_2
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %20 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %22 = OpLoad %uint %tint_symbol
+         %23 = OpLoad %uint %tint_symbol_1
+         %24 = OpIAdd %uint %22 %23
+         %25 = OpFunctionCall %void %tint_symbol_4 %12
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/vertex_input_builtins.wgsl.expected.wgsl b/test/shader_io/vertex_input_builtins.wgsl.expected.wgsl
new file mode 100644
index 0000000..ef2f3ac
--- /dev/null
+++ b/test/shader_io/vertex_input_builtins.wgsl.expected.wgsl
@@ -0,0 +1,5 @@
+[[stage(vertex)]]
+fn main([[builtin(vertex_index)]] vertex_index : u32, [[builtin(instance_index)]] instance_index : u32) -> [[builtin(position)]] vec4<f32> {
+  let foo : u32 = (vertex_index + instance_index);
+  return vec4<f32>();
+}
diff --git a/test/shader_io/vertex_input_builtins_struct.wgsl b/test/shader_io/vertex_input_builtins_struct.wgsl
new file mode 100644
index 0000000..d81bcdc
--- /dev/null
+++ b/test/shader_io/vertex_input_builtins_struct.wgsl
@@ -0,0 +1,10 @@
+struct VertexInputs {
+  [[builtin(vertex_index)]] vertex_index : u32;
+  [[builtin(instance_index)]] instance_index : u32;
+};
+
+[[stage(vertex)]]
+fn main(inputs : VertexInputs) -> [[builtin(position)]] vec4<f32> {
+  let foo : u32 = inputs.vertex_index + inputs.instance_index;
+  return vec4<f32>();
+}
diff --git a/test/shader_io/vertex_input_builtins_struct.wgsl.expected.hlsl b/test/shader_io/vertex_input_builtins_struct.wgsl.expected.hlsl
new file mode 100644
index 0000000..632e212
--- /dev/null
+++ b/test/shader_io/vertex_input_builtins_struct.wgsl.expected.hlsl
@@ -0,0 +1,19 @@
+struct VertexInputs {
+  uint vertex_index;
+  uint instance_index;
+};
+struct tint_symbol_1 {
+  uint vertex_index : SV_VertexID;
+  uint instance_index : SV_InstanceID;
+};
+struct tint_symbol_2 {
+  float4 value : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const VertexInputs inputs = {tint_symbol.vertex_index, tint_symbol.instance_index};
+  const uint foo = (inputs.vertex_index + inputs.instance_index);
+  const tint_symbol_2 tint_symbol_3 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+  return tint_symbol_3;
+}
+
diff --git a/test/shader_io/vertex_input_builtins_struct.wgsl.expected.msl b/test/shader_io/vertex_input_builtins_struct.wgsl.expected.msl
new file mode 100644
index 0000000..71d62fb
--- /dev/null
+++ b/test/shader_io/vertex_input_builtins_struct.wgsl.expected.msl
@@ -0,0 +1 @@
+SKIP: crbug.com/tint/817 attribute only applies to parameters
diff --git a/test/shader_io/vertex_input_builtins_struct.wgsl.expected.spvasm b/test/shader_io/vertex_input_builtins_struct.wgsl.expected.spvasm
new file mode 100644
index 0000000..b2af529
--- /dev/null
+++ b/test/shader_io/vertex_input_builtins_struct.wgsl.expected.spvasm
@@ -0,0 +1,59 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 30
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_1 %tint_symbol_4
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %main "main"
+               OpName %VertexInputs "VertexInputs"
+               OpMemberName %VertexInputs 0 "vertex_index"
+               OpMemberName %VertexInputs 1 "instance_index"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol BuiltIn VertexIndex
+               OpDecorate %tint_symbol_1 BuiltIn InstanceIndex
+               OpDecorate %tint_symbol_4 BuiltIn Position
+               OpMemberDecorate %VertexInputs 0 Offset 0
+               OpMemberDecorate %VertexInputs 1 Offset 4
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+       %uint = OpTypeInt 32 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol = OpVariable %_ptr_Input_uint Input
+%tint_symbol_1 = OpVariable %_ptr_Input_uint Input
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+         %12 = OpConstantNull %v4float
+%tint_symbol_4 = OpVariable %_ptr_Output_v4float Output %12
+       %void = OpTypeVoid
+         %13 = OpTypeFunction %void %v4float
+         %18 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+%VertexInputs = OpTypeStruct %uint %uint
+%tint_symbol_5 = OpFunction %void None %13
+%tint_symbol_3 = OpFunctionParameter %v4float
+         %17 = OpLabel
+               OpStore %tint_symbol_4 %tint_symbol_3
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %18
+         %20 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %23 = OpLoad %uint %tint_symbol
+         %24 = OpLoad %uint %tint_symbol_1
+         %25 = OpCompositeConstruct %VertexInputs %23 %24
+         %26 = OpCompositeExtract %uint %25 0
+         %27 = OpCompositeExtract %uint %25 1
+         %28 = OpIAdd %uint %26 %27
+         %29 = OpFunctionCall %void %tint_symbol_5 %12
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl b/test/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl
new file mode 100644
index 0000000..f63100d
--- /dev/null
+++ b/test/shader_io/vertex_input_builtins_struct.wgsl.expected.wgsl
@@ -0,0 +1,12 @@
+struct VertexInputs {
+  [[builtin(vertex_index)]]
+  vertex_index : u32;
+  [[builtin(instance_index)]]
+  instance_index : u32;
+};
+
+[[stage(vertex)]]
+fn main(inputs : VertexInputs) -> [[builtin(position)]] vec4<f32> {
+  let foo : u32 = (inputs.vertex_index + inputs.instance_index);
+  return vec4<f32>();
+}
diff --git a/test/shader_io/vertex_input_locations.wgsl b/test/shader_io/vertex_input_locations.wgsl
new file mode 100644
index 0000000..13fad04
--- /dev/null
+++ b/test/shader_io/vertex_input_locations.wgsl
@@ -0,0 +1,13 @@
+[[stage(vertex)]]
+fn main(
+  [[location(0)]] loc0 : i32,
+  [[location(1)]] loc1 : u32,
+  [[location(2)]] loc2 : f32,
+  [[location(3)]] loc3 : vec4<f32>,
+) -> [[builtin(position)]] vec4<f32> {
+  let i : i32 = loc0;
+  let u : u32 = loc1;
+  let f : f32 = loc2;
+  let v : vec4<f32> = loc3;
+  return vec4<f32>();
+}
diff --git a/test/shader_io/vertex_input_locations.wgsl.expected.hlsl b/test/shader_io/vertex_input_locations.wgsl.expected.hlsl
new file mode 100644
index 0000000..3bb4613
--- /dev/null
+++ b/test/shader_io/vertex_input_locations.wgsl.expected.hlsl
@@ -0,0 +1,23 @@
+struct tint_symbol_1 {
+  int loc0 : TEXCOORD0;
+  uint loc1 : TEXCOORD1;
+  float loc2 : TEXCOORD2;
+  float4 loc3 : TEXCOORD3;
+};
+struct tint_symbol_2 {
+  float4 value : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const int loc0 = tint_symbol.loc0;
+  const uint loc1 = tint_symbol.loc1;
+  const float loc2 = tint_symbol.loc2;
+  const float4 loc3 = tint_symbol.loc3;
+  const int i = loc0;
+  const uint u = loc1;
+  const float f = loc2;
+  const float4 v = loc3;
+  const tint_symbol_2 tint_symbol_3 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+  return tint_symbol_3;
+}
+
diff --git a/test/shader_io/vertex_input_locations.wgsl.expected.msl b/test/shader_io/vertex_input_locations.wgsl.expected.msl
new file mode 100644
index 0000000..a4c8606
--- /dev/null
+++ b/test/shader_io/vertex_input_locations.wgsl.expected.msl
@@ -0,0 +1,26 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_symbol_2 {
+  int loc0 [[attribute(0)]];
+  uint loc1 [[attribute(1)]];
+  float loc2 [[attribute(2)]];
+  float4 loc3 [[attribute(3)]];
+};
+struct tint_symbol_3 {
+  float4 value [[position]];
+};
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  int const loc0 = tint_symbol_1.loc0;
+  uint const loc1 = tint_symbol_1.loc1;
+  float const loc2 = tint_symbol_1.loc2;
+  float4 const loc3 = tint_symbol_1.loc3;
+  int const i = loc0;
+  uint const u = loc1;
+  float const f = loc2;
+  float4 const v = loc3;
+  tint_symbol_3 const tint_symbol_4 = {float4()};
+  return tint_symbol_4;
+}
+
diff --git a/test/shader_io/vertex_input_locations.wgsl.expected.spvasm b/test/shader_io/vertex_input_locations.wgsl.expected.spvasm
new file mode 100644
index 0000000..9a0c93b
--- /dev/null
+++ b/test/shader_io/vertex_input_locations.wgsl.expected.spvasm
@@ -0,0 +1,61 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 33
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_1 %tint_symbol_2 %tint_symbol_3 %tint_symbol_5
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %tint_symbol_6 "tint_symbol_6"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_1 Location 1
+               OpDecorate %tint_symbol_2 Location 2
+               OpDecorate %tint_symbol_3 Location 3
+               OpDecorate %tint_symbol_5 BuiltIn Position
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+        %int = OpTypeInt 32 1
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol = OpVariable %_ptr_Input_int Input
+       %uint = OpTypeInt 32 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol_1 = OpVariable %_ptr_Input_uint Input
+%_ptr_Input_float = OpTypePointer Input %float
+%tint_symbol_2 = OpVariable %_ptr_Input_float Input
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol_3 = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+         %18 = OpConstantNull %v4float
+%tint_symbol_5 = OpVariable %_ptr_Output_v4float Output %18
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void %v4float
+         %24 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+%tint_symbol_6 = OpFunction %void None %19
+%tint_symbol_4 = OpFunctionParameter %v4float
+         %23 = OpLabel
+               OpStore %tint_symbol_5 %tint_symbol_4
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %24
+         %26 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %28 = OpLoad %int %tint_symbol
+         %29 = OpLoad %uint %tint_symbol_1
+         %30 = OpLoad %float %tint_symbol_2
+         %31 = OpLoad %v4float %tint_symbol_3
+         %32 = OpFunctionCall %void %tint_symbol_6 %18
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/vertex_input_locations.wgsl.expected.wgsl b/test/shader_io/vertex_input_locations.wgsl.expected.wgsl
new file mode 100644
index 0000000..3730fec
--- /dev/null
+++ b/test/shader_io/vertex_input_locations.wgsl.expected.wgsl
@@ -0,0 +1,8 @@
+[[stage(vertex)]]
+fn main([[location(0)]] loc0 : i32, [[location(1)]] loc1 : u32, [[location(2)]] loc2 : f32, [[location(3)]] loc3 : vec4<f32>) -> [[builtin(position)]] vec4<f32> {
+  let i : i32 = loc0;
+  let u : u32 = loc1;
+  let f : f32 = loc2;
+  let v : vec4<f32> = loc3;
+  return vec4<f32>();
+}
diff --git a/test/shader_io/vertex_input_locations_struct.wgsl b/test/shader_io/vertex_input_locations_struct.wgsl
new file mode 100644
index 0000000..441ffdc
--- /dev/null
+++ b/test/shader_io/vertex_input_locations_struct.wgsl
@@ -0,0 +1,15 @@
+struct VertexInputs {
+  [[location(0)]] loc0 : i32;
+  [[location(1)]] loc1 : u32;
+  [[location(2)]] loc2 : f32;
+  [[location(3)]] loc3 : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main(inputs : VertexInputs) -> [[builtin(position)]] vec4<f32> {
+  let i : i32 = inputs.loc0;
+  let u : u32 = inputs.loc1;
+  let f : f32 = inputs.loc2;
+  let v : vec4<f32> = inputs.loc3;
+  return vec4<f32>();
+}
diff --git a/test/shader_io/vertex_input_locations_struct.wgsl.expected.hlsl b/test/shader_io/vertex_input_locations_struct.wgsl.expected.hlsl
new file mode 100644
index 0000000..f93f2fe
--- /dev/null
+++ b/test/shader_io/vertex_input_locations_struct.wgsl.expected.hlsl
@@ -0,0 +1,26 @@
+struct VertexInputs {
+  int loc0;
+  uint loc1;
+  float loc2;
+  float4 loc3;
+};
+struct tint_symbol_1 {
+  int loc0 : TEXCOORD0;
+  uint loc1 : TEXCOORD1;
+  float loc2 : TEXCOORD2;
+  float4 loc3 : TEXCOORD3;
+};
+struct tint_symbol_2 {
+  float4 value : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const VertexInputs inputs = {tint_symbol.loc0, tint_symbol.loc1, tint_symbol.loc2, tint_symbol.loc3};
+  const int i = inputs.loc0;
+  const uint u = inputs.loc1;
+  const float f = inputs.loc2;
+  const float4 v = inputs.loc3;
+  const tint_symbol_2 tint_symbol_3 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+  return tint_symbol_3;
+}
+
diff --git a/test/shader_io/vertex_input_locations_struct.wgsl.expected.msl b/test/shader_io/vertex_input_locations_struct.wgsl.expected.msl
new file mode 100644
index 0000000..6cce9d7
--- /dev/null
+++ b/test/shader_io/vertex_input_locations_struct.wgsl.expected.msl
@@ -0,0 +1,29 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct VertexInputs {
+  int loc0;
+  uint loc1;
+  float loc2;
+  float4 loc3;
+};
+struct tint_symbol_2 {
+  int loc0 [[attribute(0)]];
+  uint loc1 [[attribute(1)]];
+  float loc2 [[attribute(2)]];
+  float4 loc3 [[attribute(3)]];
+};
+struct tint_symbol_3 {
+  float4 value [[position]];
+};
+
+vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+  VertexInputs const inputs = {tint_symbol_1.loc0, tint_symbol_1.loc1, tint_symbol_1.loc2, tint_symbol_1.loc3};
+  int const i = inputs.loc0;
+  uint const u = inputs.loc1;
+  float const f = inputs.loc2;
+  float4 const v = inputs.loc3;
+  tint_symbol_3 const tint_symbol_4 = {float4()};
+  return tint_symbol_4;
+}
+
diff --git a/test/shader_io/vertex_input_locations_struct.wgsl.expected.spvasm b/test/shader_io/vertex_input_locations_struct.wgsl.expected.spvasm
new file mode 100644
index 0000000..3766af8
--- /dev/null
+++ b/test/shader_io/vertex_input_locations_struct.wgsl.expected.spvasm
@@ -0,0 +1,76 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 39
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_1 %tint_symbol_2 %tint_symbol_3 %tint_symbol_6
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_6 "tint_symbol_6"
+               OpName %tint_symbol_7 "tint_symbol_7"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %main "main"
+               OpName %VertexInputs "VertexInputs"
+               OpMemberName %VertexInputs 0 "loc0"
+               OpMemberName %VertexInputs 1 "loc1"
+               OpMemberName %VertexInputs 2 "loc2"
+               OpMemberName %VertexInputs 3 "loc3"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol Location 0
+               OpDecorate %tint_symbol_1 Location 1
+               OpDecorate %tint_symbol_2 Location 2
+               OpDecorate %tint_symbol_3 Location 3
+               OpDecorate %tint_symbol_6 BuiltIn Position
+               OpMemberDecorate %VertexInputs 0 Offset 0
+               OpMemberDecorate %VertexInputs 1 Offset 4
+               OpMemberDecorate %VertexInputs 2 Offset 8
+               OpMemberDecorate %VertexInputs 3 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+        %int = OpTypeInt 32 1
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol = OpVariable %_ptr_Input_int Input
+       %uint = OpTypeInt 32 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol_1 = OpVariable %_ptr_Input_uint Input
+%_ptr_Input_float = OpTypePointer Input %float
+%tint_symbol_2 = OpVariable %_ptr_Input_float Input
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol_3 = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+         %18 = OpConstantNull %v4float
+%tint_symbol_6 = OpVariable %_ptr_Output_v4float Output %18
+       %void = OpTypeVoid
+         %19 = OpTypeFunction %void %v4float
+         %24 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+%VertexInputs = OpTypeStruct %int %uint %float %v4float
+%tint_symbol_7 = OpFunction %void None %19
+%tint_symbol_5 = OpFunctionParameter %v4float
+         %23 = OpLabel
+               OpStore %tint_symbol_6 %tint_symbol_5
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %24
+         %26 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %29 = OpLoad %int %tint_symbol
+         %30 = OpLoad %uint %tint_symbol_1
+         %31 = OpLoad %float %tint_symbol_2
+         %32 = OpLoad %v4float %tint_symbol_3
+         %33 = OpCompositeConstruct %VertexInputs %29 %30 %31 %32
+         %34 = OpCompositeExtract %int %33 0
+         %35 = OpCompositeExtract %uint %33 1
+         %36 = OpCompositeExtract %float %33 2
+         %37 = OpCompositeExtract %v4float %33 3
+         %38 = OpFunctionCall %void %tint_symbol_7 %18
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl b/test/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl
new file mode 100644
index 0000000..28d40aa
--- /dev/null
+++ b/test/shader_io/vertex_input_locations_struct.wgsl.expected.wgsl
@@ -0,0 +1,19 @@
+struct VertexInputs {
+  [[location(0)]]
+  loc0 : i32;
+  [[location(1)]]
+  loc1 : u32;
+  [[location(2)]]
+  loc2 : f32;
+  [[location(3)]]
+  loc3 : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main(inputs : VertexInputs) -> [[builtin(position)]] vec4<f32> {
+  let i : i32 = inputs.loc0;
+  let u : u32 = inputs.loc1;
+  let f : f32 = inputs.loc2;
+  let v : vec4<f32> = inputs.loc3;
+  return vec4<f32>();
+}
diff --git a/test/shader_io/vertex_input_mixed.wgsl b/test/shader_io/vertex_input_mixed.wgsl
new file mode 100644
index 0000000..7c5eafe
--- /dev/null
+++ b/test/shader_io/vertex_input_mixed.wgsl
@@ -0,0 +1,23 @@
+struct VertexInputs0 {
+  [[builtin(vertex_index)]] vertex_index : u32;
+  [[location(0)]] loc0 : i32;
+};
+struct VertexInputs1 {
+  [[location(2)]] loc2 : f32;
+  [[location(3)]] loc3 : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main(
+  inputs0 : VertexInputs0,
+  [[location(1)]] loc1 : u32,
+  [[builtin(instance_index)]] instance_index : u32,
+  inputs1 : VertexInputs1,
+) -> [[builtin(position)]] vec4<f32> {
+  let foo : u32 = inputs0.vertex_index + instance_index;
+  let i : i32 = inputs0.loc0;
+  let u : u32 = loc1;
+  let f : f32 = inputs1.loc2;
+  let v : vec4<f32> = inputs1.loc3;
+  return vec4<f32>();
+}
diff --git a/test/shader_io/vertex_input_mixed.wgsl.expected.hlsl b/test/shader_io/vertex_input_mixed.wgsl.expected.hlsl
new file mode 100644
index 0000000..aa630cf
--- /dev/null
+++ b/test/shader_io/vertex_input_mixed.wgsl.expected.hlsl
@@ -0,0 +1,34 @@
+struct VertexInputs0 {
+  uint vertex_index;
+  int loc0;
+};
+struct VertexInputs1 {
+  float loc2;
+  float4 loc3;
+};
+struct tint_symbol_1 {
+  int loc0 : TEXCOORD0;
+  uint loc1 : TEXCOORD1;
+  float loc2 : TEXCOORD2;
+  float4 loc3 : TEXCOORD3;
+  uint vertex_index : SV_VertexID;
+  uint instance_index : SV_InstanceID;
+};
+struct tint_symbol_2 {
+  float4 value : SV_Position;
+};
+
+tint_symbol_2 main(tint_symbol_1 tint_symbol) {
+  const VertexInputs0 inputs0 = {tint_symbol.vertex_index, tint_symbol.loc0};
+  const uint loc1 = tint_symbol.loc1;
+  const uint instance_index = tint_symbol.instance_index;
+  const VertexInputs1 inputs1 = {tint_symbol.loc2, tint_symbol.loc3};
+  const uint foo = (inputs0.vertex_index + instance_index);
+  const int i = inputs0.loc0;
+  const uint u = loc1;
+  const float f = inputs1.loc2;
+  const float4 v = inputs1.loc3;
+  const tint_symbol_2 tint_symbol_3 = {float4(0.0f, 0.0f, 0.0f, 0.0f)};
+  return tint_symbol_3;
+}
+
diff --git a/test/shader_io/vertex_input_mixed.wgsl.expected.msl b/test/shader_io/vertex_input_mixed.wgsl.expected.msl
new file mode 100644
index 0000000..71d62fb
--- /dev/null
+++ b/test/shader_io/vertex_input_mixed.wgsl.expected.msl
@@ -0,0 +1 @@
+SKIP: crbug.com/tint/817 attribute only applies to parameters
diff --git a/test/shader_io/vertex_input_mixed.wgsl.expected.spvasm b/test/shader_io/vertex_input_mixed.wgsl.expected.spvasm
new file mode 100644
index 0000000..f930879
--- /dev/null
+++ b/test/shader_io/vertex_input_mixed.wgsl.expected.spvasm
@@ -0,0 +1,88 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 46
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol %tint_symbol_1 %tint_symbol_5 %tint_symbol_6 %tint_symbol_4 %tint_symbol_3 %tint_symbol_9
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %tint_symbol "tint_symbol"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %tint_symbol_6 "tint_symbol_6"
+               OpName %tint_symbol_9 "tint_symbol_9"
+               OpName %tint_symbol_10 "tint_symbol_10"
+               OpName %tint_symbol_8 "tint_symbol_8"
+               OpName %main "main"
+               OpName %VertexInputs0 "VertexInputs0"
+               OpMemberName %VertexInputs0 0 "vertex_index"
+               OpMemberName %VertexInputs0 1 "loc0"
+               OpName %VertexInputs1 "VertexInputs1"
+               OpMemberName %VertexInputs1 0 "loc2"
+               OpMemberName %VertexInputs1 1 "loc3"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol BuiltIn VertexIndex
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_3 Location 1
+               OpDecorate %tint_symbol_4 BuiltIn InstanceIndex
+               OpDecorate %tint_symbol_5 Location 2
+               OpDecorate %tint_symbol_6 Location 3
+               OpDecorate %tint_symbol_9 BuiltIn Position
+               OpMemberDecorate %VertexInputs0 0 Offset 0
+               OpMemberDecorate %VertexInputs0 1 Offset 4
+               OpMemberDecorate %VertexInputs1 0 Offset 0
+               OpMemberDecorate %VertexInputs1 1 Offset 16
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+       %uint = OpTypeInt 32 0
+%_ptr_Input_uint = OpTypePointer Input %uint
+%tint_symbol = OpVariable %_ptr_Input_uint Input
+        %int = OpTypeInt 32 1
+%_ptr_Input_int = OpTypePointer Input %int
+%tint_symbol_1 = OpVariable %_ptr_Input_int Input
+%tint_symbol_3 = OpVariable %_ptr_Input_uint Input
+%tint_symbol_4 = OpVariable %_ptr_Input_uint Input
+%_ptr_Input_float = OpTypePointer Input %float
+%tint_symbol_5 = OpVariable %_ptr_Input_float Input
+    %v4float = OpTypeVector %float 4
+%_ptr_Input_v4float = OpTypePointer Input %v4float
+%tint_symbol_6 = OpVariable %_ptr_Input_v4float Input
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+         %20 = OpConstantNull %v4float
+%tint_symbol_9 = OpVariable %_ptr_Output_v4float Output %20
+       %void = OpTypeVoid
+         %21 = OpTypeFunction %void %v4float
+         %26 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+%VertexInputs0 = OpTypeStruct %uint %int
+%VertexInputs1 = OpTypeStruct %float %v4float
+%tint_symbol_10 = OpFunction %void None %21
+%tint_symbol_8 = OpFunctionParameter %v4float
+         %25 = OpLabel
+               OpStore %tint_symbol_9 %tint_symbol_8
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %26
+         %28 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %31 = OpLoad %uint %tint_symbol
+         %32 = OpLoad %int %tint_symbol_1
+         %33 = OpCompositeConstruct %VertexInputs0 %31 %32
+         %35 = OpLoad %float %tint_symbol_5
+         %36 = OpLoad %v4float %tint_symbol_6
+         %37 = OpCompositeConstruct %VertexInputs1 %35 %36
+         %38 = OpCompositeExtract %uint %33 0
+         %39 = OpLoad %uint %tint_symbol_4
+         %40 = OpIAdd %uint %38 %39
+         %41 = OpCompositeExtract %int %33 1
+         %42 = OpLoad %uint %tint_symbol_3
+         %43 = OpCompositeExtract %float %37 0
+         %44 = OpCompositeExtract %v4float %37 1
+         %45 = OpFunctionCall %void %tint_symbol_10 %20
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/vertex_input_mixed.wgsl.expected.wgsl b/test/shader_io/vertex_input_mixed.wgsl.expected.wgsl
new file mode 100644
index 0000000..0cd61f6
--- /dev/null
+++ b/test/shader_io/vertex_input_mixed.wgsl.expected.wgsl
@@ -0,0 +1,23 @@
+struct VertexInputs0 {
+  [[builtin(vertex_index)]]
+  vertex_index : u32;
+  [[location(0)]]
+  loc0 : i32;
+};
+
+struct VertexInputs1 {
+  [[location(2)]]
+  loc2 : f32;
+  [[location(3)]]
+  loc3 : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main(inputs0 : VertexInputs0, [[location(1)]] loc1 : u32, [[builtin(instance_index)]] instance_index : u32, inputs1 : VertexInputs1) -> [[builtin(position)]] vec4<f32> {
+  let foo : u32 = (inputs0.vertex_index + instance_index);
+  let i : i32 = inputs0.loc0;
+  let u : u32 = loc1;
+  let f : f32 = inputs1.loc2;
+  let v : vec4<f32> = inputs1.loc3;
+  return vec4<f32>();
+}
diff --git a/test/shader_io/vertex_output_builtins.wgsl b/test/shader_io/vertex_output_builtins.wgsl
new file mode 100644
index 0000000..46776de
--- /dev/null
+++ b/test/shader_io/vertex_output_builtins.wgsl
@@ -0,0 +1,4 @@
+[[stage(vertex)]]
+fn main() -> [[builtin(position)]] vec4<f32> {
+  return vec4<f32>(1.0, 2.0, 3.0, 4.0);
+}
diff --git a/test/shader_io/vertex_output_builtins.wgsl.expected.hlsl b/test/shader_io/vertex_output_builtins.wgsl.expected.hlsl
new file mode 100644
index 0000000..1c95996
--- /dev/null
+++ b/test/shader_io/vertex_output_builtins.wgsl.expected.hlsl
@@ -0,0 +1,9 @@
+struct tint_symbol {
+  float4 value : SV_Position;
+};
+
+tint_symbol main() {
+  const tint_symbol tint_symbol_1 = {float4(1.0f, 2.0f, 3.0f, 4.0f)};
+  return tint_symbol_1;
+}
+
diff --git a/test/shader_io/vertex_output_builtins.wgsl.expected.msl b/test/shader_io/vertex_output_builtins.wgsl.expected.msl
new file mode 100644
index 0000000..6cb014c
--- /dev/null
+++ b/test/shader_io/vertex_output_builtins.wgsl.expected.msl
@@ -0,0 +1,12 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct tint_symbol_1 {
+  float4 value [[position]];
+};
+
+vertex tint_symbol_1 tint_symbol() {
+  tint_symbol_1 const tint_symbol_2 = {float4(1.0f, 2.0f, 3.0f, 4.0f)};
+  return tint_symbol_2;
+}
+
diff --git a/test/shader_io/vertex_output_builtins.wgsl.expected.spvasm b/test/shader_io/vertex_output_builtins.wgsl.expected.spvasm
new file mode 100644
index 0000000..c92e684
--- /dev/null
+++ b/test/shader_io/vertex_output_builtins.wgsl.expected.spvasm
@@ -0,0 +1,43 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 23
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol_1
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol_1 BuiltIn Position
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %8 = OpConstantNull %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+          %9 = OpTypeFunction %void %v4float
+         %14 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %22 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+%tint_symbol_2 = OpFunction %void None %9
+%tint_symbol = OpFunctionParameter %v4float
+         %13 = OpLabel
+               OpStore %tint_symbol_1 %tint_symbol
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %14
+         %16 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %18 = OpFunctionCall %void %tint_symbol_2 %22
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/vertex_output_builtins.wgsl.expected.wgsl b/test/shader_io/vertex_output_builtins.wgsl.expected.wgsl
new file mode 100644
index 0000000..46776de
--- /dev/null
+++ b/test/shader_io/vertex_output_builtins.wgsl.expected.wgsl
@@ -0,0 +1,4 @@
+[[stage(vertex)]]
+fn main() -> [[builtin(position)]] vec4<f32> {
+  return vec4<f32>(1.0, 2.0, 3.0, 4.0);
+}
diff --git a/test/shader_io/vertex_output_builtins_struct.wgsl b/test/shader_io/vertex_output_builtins_struct.wgsl
new file mode 100644
index 0000000..9e09d38
--- /dev/null
+++ b/test/shader_io/vertex_output_builtins_struct.wgsl
@@ -0,0 +1,8 @@
+struct VertexOutputs {
+  [[builtin(position)]] position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main() -> VertexOutputs {
+  return VertexOutputs(vec4<f32>(1.0, 2.0, 3.0, 4.0));
+}
diff --git a/test/shader_io/vertex_output_builtins_struct.wgsl.expected.hlsl b/test/shader_io/vertex_output_builtins_struct.wgsl.expected.hlsl
new file mode 100644
index 0000000..8cb1a5f
--- /dev/null
+++ b/test/shader_io/vertex_output_builtins_struct.wgsl.expected.hlsl
@@ -0,0 +1,13 @@
+struct VertexOutputs {
+  float4 position;
+};
+struct tint_symbol {
+  float4 position : SV_Position;
+};
+
+tint_symbol main() {
+  const VertexOutputs tint_symbol_1 = {float4(1.0f, 2.0f, 3.0f, 4.0f)};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.position};
+  return tint_symbol_2;
+}
+
diff --git a/test/shader_io/vertex_output_builtins_struct.wgsl.expected.msl b/test/shader_io/vertex_output_builtins_struct.wgsl.expected.msl
new file mode 100644
index 0000000..86fbbe5
--- /dev/null
+++ b/test/shader_io/vertex_output_builtins_struct.wgsl.expected.msl
@@ -0,0 +1,16 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct VertexOutputs {
+  float4 position;
+};
+struct tint_symbol_1 {
+  float4 position [[position]];
+};
+
+vertex tint_symbol_1 tint_symbol() {
+  VertexOutputs const tint_symbol_2 = {float4(1.0f, 2.0f, 3.0f, 4.0f)};
+  tint_symbol_1 const tint_symbol_3 = {tint_symbol_2.position};
+  return tint_symbol_3;
+}
+
diff --git a/test/shader_io/vertex_output_builtins_struct.wgsl.expected.spvasm b/test/shader_io/vertex_output_builtins_struct.wgsl.expected.spvasm
new file mode 100644
index 0000000..ae99bdc
--- /dev/null
+++ b/test/shader_io/vertex_output_builtins_struct.wgsl.expected.spvasm
@@ -0,0 +1,49 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 26
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol_1
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %VertexOutputs "VertexOutputs"
+               OpMemberName %VertexOutputs 0 "position"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol_1 BuiltIn Position
+               OpMemberDecorate %VertexOutputs 0 Offset 0
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+          %8 = OpConstantNull %v4float
+%tint_symbol_1 = OpVariable %_ptr_Output_v4float Output %8
+       %void = OpTypeVoid
+%VertexOutputs = OpTypeStruct %v4float
+          %9 = OpTypeFunction %void %VertexOutputs
+         %16 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %24 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+         %25 = OpConstantComposite %VertexOutputs %24
+%tint_symbol_2 = OpFunction %void None %9
+%tint_symbol = OpFunctionParameter %VertexOutputs
+         %14 = OpLabel
+         %15 = OpCompositeExtract %v4float %tint_symbol 0
+               OpStore %tint_symbol_1 %15
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %16
+         %18 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %20 = OpFunctionCall %void %tint_symbol_2 %25
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl b/test/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl
new file mode 100644
index 0000000..77d3b51
--- /dev/null
+++ b/test/shader_io/vertex_output_builtins_struct.wgsl.expected.wgsl
@@ -0,0 +1,9 @@
+struct VertexOutputs {
+  [[builtin(position)]]
+  position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main() -> VertexOutputs {
+  return VertexOutputs(vec4<f32>(1.0, 2.0, 3.0, 4.0));
+}
diff --git a/test/shader_io/vertex_output_locations_struct.wgsl b/test/shader_io/vertex_output_locations_struct.wgsl
new file mode 100644
index 0000000..a2303ed
--- /dev/null
+++ b/test/shader_io/vertex_output_locations_struct.wgsl
@@ -0,0 +1,12 @@
+struct VertexOutputs {
+  [[location(0)]] loc0 : i32;
+  [[location(1)]] loc1 : u32;
+  [[location(2)]] loc2 : f32;
+  [[location(3)]] loc3 : vec4<f32>;
+  [[builtin(position)]] position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main() -> VertexOutputs {
+  return VertexOutputs(1, 1u, 1.0, vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>());
+}
diff --git a/test/shader_io/vertex_output_locations_struct.wgsl.expected.hlsl b/test/shader_io/vertex_output_locations_struct.wgsl.expected.hlsl
new file mode 100644
index 0000000..32ba657
--- /dev/null
+++ b/test/shader_io/vertex_output_locations_struct.wgsl.expected.hlsl
@@ -0,0 +1,21 @@
+struct VertexOutputs {
+  int loc0;
+  uint loc1;
+  float loc2;
+  float4 loc3;
+  float4 position;
+};
+struct tint_symbol {
+  int loc0 : TEXCOORD0;
+  uint loc1 : TEXCOORD1;
+  float loc2 : TEXCOORD2;
+  float4 loc3 : TEXCOORD3;
+  float4 position : SV_Position;
+};
+
+tint_symbol main() {
+  const VertexOutputs tint_symbol_1 = {1, 1u, 1.0f, float4(1.0f, 2.0f, 3.0f, 4.0f), float4(0.0f, 0.0f, 0.0f, 0.0f)};
+  const tint_symbol tint_symbol_2 = {tint_symbol_1.loc0, tint_symbol_1.loc1, tint_symbol_1.loc2, tint_symbol_1.loc3, tint_symbol_1.position};
+  return tint_symbol_2;
+}
+
diff --git a/test/shader_io/vertex_output_locations_struct.wgsl.expected.msl b/test/shader_io/vertex_output_locations_struct.wgsl.expected.msl
new file mode 100644
index 0000000..3bd0de3
--- /dev/null
+++ b/test/shader_io/vertex_output_locations_struct.wgsl.expected.msl
@@ -0,0 +1,24 @@
+#include <metal_stdlib>
+
+using namespace metal;
+struct VertexOutputs {
+  int loc0;
+  uint loc1;
+  float loc2;
+  float4 loc3;
+  float4 position;
+};
+struct tint_symbol_1 {
+  int loc0 [[user(locn0)]];
+  uint loc1 [[user(locn1)]];
+  float loc2 [[user(locn2)]];
+  float4 loc3 [[user(locn3)]];
+  float4 position [[position]];
+};
+
+vertex tint_symbol_1 tint_symbol() {
+  VertexOutputs const tint_symbol_2 = {1, 1u, 1.0f, float4(1.0f, 2.0f, 3.0f, 4.0f), float4()};
+  tint_symbol_1 const tint_symbol_3 = {tint_symbol_2.loc0, tint_symbol_2.loc1, tint_symbol_2.loc2, tint_symbol_2.loc3, tint_symbol_2.position};
+  return tint_symbol_3;
+}
+
diff --git a/test/shader_io/vertex_output_locations_struct.wgsl.expected.spvasm b/test/shader_io/vertex_output_locations_struct.wgsl.expected.spvasm
new file mode 100644
index 0000000..dffd402
--- /dev/null
+++ b/test/shader_io/vertex_output_locations_struct.wgsl.expected.spvasm
@@ -0,0 +1,85 @@
+; SPIR-V
+; Version: 1.3
+; Generator: Google Tint Compiler; 0
+; Bound: 42
+; Schema: 0
+               OpCapability Shader
+               OpMemoryModel Logical GLSL450
+               OpEntryPoint Vertex %main "main" %tint_pointsize %tint_symbol_1 %tint_symbol_2 %tint_symbol_3 %tint_symbol_4 %tint_symbol_5
+               OpName %tint_pointsize "tint_pointsize"
+               OpName %tint_symbol_1 "tint_symbol_1"
+               OpName %tint_symbol_2 "tint_symbol_2"
+               OpName %tint_symbol_3 "tint_symbol_3"
+               OpName %tint_symbol_4 "tint_symbol_4"
+               OpName %tint_symbol_5 "tint_symbol_5"
+               OpName %VertexOutputs "VertexOutputs"
+               OpMemberName %VertexOutputs 0 "loc0"
+               OpMemberName %VertexOutputs 1 "loc1"
+               OpMemberName %VertexOutputs 2 "loc2"
+               OpMemberName %VertexOutputs 3 "loc3"
+               OpMemberName %VertexOutputs 4 "position"
+               OpName %tint_symbol_6 "tint_symbol_6"
+               OpName %tint_symbol "tint_symbol"
+               OpName %main "main"
+               OpDecorate %tint_pointsize BuiltIn PointSize
+               OpDecorate %tint_symbol_1 Location 0
+               OpDecorate %tint_symbol_2 Location 1
+               OpDecorate %tint_symbol_3 Location 2
+               OpDecorate %tint_symbol_4 Location 3
+               OpDecorate %tint_symbol_5 BuiltIn Position
+               OpMemberDecorate %VertexOutputs 0 Offset 0
+               OpMemberDecorate %VertexOutputs 1 Offset 4
+               OpMemberDecorate %VertexOutputs 2 Offset 8
+               OpMemberDecorate %VertexOutputs 3 Offset 16
+               OpMemberDecorate %VertexOutputs 4 Offset 32
+      %float = OpTypeFloat 32
+%_ptr_Output_float = OpTypePointer Output %float
+          %4 = OpConstantNull %float
+%tint_pointsize = OpVariable %_ptr_Output_float Output %4
+        %int = OpTypeInt 32 1
+%_ptr_Output_int = OpTypePointer Output %int
+          %8 = OpConstantNull %int
+%tint_symbol_1 = OpVariable %_ptr_Output_int Output %8
+       %uint = OpTypeInt 32 0
+%_ptr_Output_uint = OpTypePointer Output %uint
+         %12 = OpConstantNull %uint
+%tint_symbol_2 = OpVariable %_ptr_Output_uint Output %12
+%tint_symbol_3 = OpVariable %_ptr_Output_float Output %4
+    %v4float = OpTypeVector %float 4
+%_ptr_Output_v4float = OpTypePointer Output %v4float
+         %17 = OpConstantNull %v4float
+%tint_symbol_4 = OpVariable %_ptr_Output_v4float Output %17
+%tint_symbol_5 = OpVariable %_ptr_Output_v4float Output %17
+       %void = OpTypeVoid
+%VertexOutputs = OpTypeStruct %int %uint %float %v4float %v4float
+         %19 = OpTypeFunction %void %VertexOutputs
+         %30 = OpTypeFunction %void
+    %float_1 = OpConstant %float 1
+      %int_1 = OpConstant %int 1
+     %uint_1 = OpConstant %uint 1
+    %float_2 = OpConstant %float 2
+    %float_3 = OpConstant %float 3
+    %float_4 = OpConstant %float 4
+         %40 = OpConstantComposite %v4float %float_1 %float_2 %float_3 %float_4
+         %41 = OpConstantComposite %VertexOutputs %int_1 %uint_1 %float_1 %40 %17
+%tint_symbol_6 = OpFunction %void None %19
+%tint_symbol = OpFunctionParameter %VertexOutputs
+         %24 = OpLabel
+         %25 = OpCompositeExtract %int %tint_symbol 0
+               OpStore %tint_symbol_1 %25
+         %26 = OpCompositeExtract %uint %tint_symbol 1
+               OpStore %tint_symbol_2 %26
+         %27 = OpCompositeExtract %float %tint_symbol 2
+               OpStore %tint_symbol_3 %27
+         %28 = OpCompositeExtract %v4float %tint_symbol 3
+               OpStore %tint_symbol_4 %28
+         %29 = OpCompositeExtract %v4float %tint_symbol 4
+               OpStore %tint_symbol_5 %29
+               OpReturn
+               OpFunctionEnd
+       %main = OpFunction %void None %30
+         %32 = OpLabel
+               OpStore %tint_pointsize %float_1
+         %34 = OpFunctionCall %void %tint_symbol_6 %41
+               OpReturn
+               OpFunctionEnd
diff --git a/test/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl b/test/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl
new file mode 100644
index 0000000..8716f56
--- /dev/null
+++ b/test/shader_io/vertex_output_locations_struct.wgsl.expected.wgsl
@@ -0,0 +1,17 @@
+struct VertexOutputs {
+  [[location(0)]]
+  loc0 : i32;
+  [[location(1)]]
+  loc1 : u32;
+  [[location(2)]]
+  loc2 : f32;
+  [[location(3)]]
+  loc3 : vec4<f32>;
+  [[builtin(position)]]
+  position : vec4<f32>;
+};
+
+[[stage(vertex)]]
+fn main() -> VertexOutputs {
+  return VertexOutputs(1, 1u, 1.0, vec4<f32>(1.0, 2.0, 3.0, 4.0), vec4<f32>());
+}
